2010-03-27 15 views

risposta

7

Creare uno script SQL con più istruzioni DELETE (una per ogni tabella) ed eseguirlo.

Entrare in phpMyAdmin e selezionare il database desiderato. Seleziona la scheda SQL e incolla lo script SQL nella finestra. Hit Go.

Guarda anche qui:

Drop all tables from a MySQL Database without deletion

+1

Grande, e che SQL può essere aggiunto ai segnalibri in phpMyAdmin in modo che possa riutilizzarlo. – Joshua

2

Sfortunatamente, non c'è TRUNCATE DATABASE o equivalente. Detto questo, potresti probabilmente usare una sorta di stored procedure che passa attraverso tutte le tabelle del tuo database e le tronca. I found something of that kind here, ma non so se funzioni. (Probabilmente dovresti leggere anche la discussione dei commenti)

3

si potrebbe iniziare con questa query

SELECT T.* 
FROM INFORMATION_SCHEMA.tables T 
WHERE T.table_type = 'BASE TABLE' 

E scorrere questi risultati per costruire una stringa SQL dinamica per la somma di 'DELETE FROM' + T.Table_Name

1
drop procedure if exists truncate_tables; 

delimiter # 
create procedure truncate_tables() 
begin 
declare tab_name varchar(64); 
declare done tinyint unsigned default 0; 

declare table_cur cursor for select t.table_name 
from 
    information_schema.schemata s 
    inner join information_schema.tables t on s.schema_name = t.table_schema 
where 
    s.schema_name = database() and t.table_type = 'BASE TABLE'; 

declare continue handler for not found set done = 1; 

open table_cur; 
repeat 
    fetch table_cur into tab_name; 
    set @cmd = concat('truncate table ', tab_name); 

    prepare stmt from @cmd; 
    execute stmt; 
until done end repeat; 

close table_cur; 
end # 
2

IlL'istruzionesvuoterà completamente una tabella (MySql 3.23 e successive).

È possibile creare uno script che è possibile riutilizzare per un determinato database. Non è generico ma ti salva dalla creazione di un nuovo database + login ogni volta che vuoi iniziare con un nuovo db.

Ecco come creare uno script da te: Nel browser Web vai su phpMyAdmin e seleziona il database. Fare clic sulla scheda SQL ed eseguire 'SHOW TABLES'. Scegli il formato compatibile con la stampante e copia il contenuto in un editor di testo.

Ora, per ogni nome di tabella che si ri-scrive nel formato:

TRUNCATE TABLE <tablename>; 

Nota: è possibile usare un'espressione regolare, se si dispone di molti tavoli

+0

Se si tronca una tabella del genere, la chiave primaria ricomincia da 1? – JRowan

+0

Nemmeno questo mi ha detto http://www.mainelydesign.com/blog/view/difference-between-truncate-empty-delete-from-in-mysql – JRowan

1

Si potrebbe esportare le strutture di tabella solo come this:

mysqldump -u root -p --no-data mydb > backup_info.sql 

quindi rilasciare l'intero database, ricrearlo e ripristinarlo dal backup.

Abbastanza facile da scrivere tutto.

+0

La domanda originariamente diceva: "senza rilasciare il database" ... – Amr

4

Siamo in grado di troncare tutti i dati di tabelle da phpMyAdmin in realtà!

In phpMyAdmin, si può fare come seguenti fasi:

1) selezionare u DB e fare operazioni di esportazione come in questo modo: Metodo

selezionare Custom Export

  • selezionare 'Tabella Dump -> dati 'in Opzioni specifiche del formato
  • selezionare' Aggiungi DROP TABLE ... istruzione 'in Opzioni di creazione oggetto.

Con questo passaggio, phpMyAdmin ci aiuta a creare uno script SQL di elenco completo di tutte le tabelle

3) fare operazione di importazione per eliminare e creare ogni tabella vuota uno per uno da questo script

enter image description here

+0

Questa è una delle migliori risposte perché la domanda originale posta su PhpMyAdmin, non su SQL regolare, e le chiamate alla console potrebbero non essere un'opzione se l'utente non ha i privilegi per farlo. – OMA

0

In realtà, è andato più a fondo e ha scritto questo:

SET @command:=''; 
SELECT @command:=CONCAT(@command, 'TRUNCATE TABLE ',T.TABLE_NAME,';') 
FROM INFORMATION_SCHEMA.tables T 
WHERE T.table_type = 'BASE TABLE' AND T.table_schema='YOUR_TABLE_SCHEMA'; 
PREPARE bye_world FROM @command; 
EXECUTE bye_world; 
DEALLOCATE PREPARE bye_world; 

e Selec ts i nomi delle tabelle da fornita schema YOUR_TABLE_SCHEMA e li mette in una variabile @command utente, formando una query per ogni uno come questo: TRUNCATE TABLE TABLE_NAME;

poi ho appena preparare dichiarazione selezionato ed eseguirlo. Nota che devi dichiarare la variabile utente prima della query, o sarà 0 e rovinare la nostra dichiarazione.

Tutorial

Utilizzando MySQL DROP TABLE per rimuovere le tabelle esistenti

14

IMHO la soluzione più semplice è:

  • in phpMyAdmin selezionare il database che si desidera troncare nel databases- lista (lato sinistro)
  • Nella vista principale scorri verso il basso, vedrai un checkbo x "Controlla tutto" e accanto ad esso una casella a discesa in cui è possibile selezionare "Vuoto". Fatto.
+3

Questa è la migliore risposta, dal momento che è facile, al punto ed è l'unica risposta che fa esattamente ciò che la domanda originale ha chiesto (eliminare tutte le tabelle utilizzando PhpMyAdmin, non le chiamate SQL o console). La prossima migliore risposta è quella di John Yin, ma anche se ha usato PhpMyAdmin, il suo metodo è utile solo quando si importa un oggetto molto simile con le stesse tabelle. – OMA

+0

Assolutamente la migliore risposta usando l'interfaccia utente. – notthehoff

Problemi correlati