2010-03-27 10 views
7

Comment puis-je vider le contenu de toutes les tables de ma base de données dans phpMyAdmin sans perdre aucune des tables de la base de données? Puisque je fais cela plusieurs fois par heure pendant le développement, je ne clique pas individuellement "Empty" sur les 60 tables et plus à chaque fois.Comment puis-je supprimer le contenu de toutes les tables dans ma base de données dans phpMyAdmin sans laisser tomber la base de données?

+1

Les majuscules sont importantes, veuillez les utiliser seulement si nécessaire. – MarkR

Répondre

7

Créez un script SQL avec plusieurs instructions DELETE (une pour chaque table) et exécutez-le.

Entrez dans phpMyAdmin et sélectionnez la base de données que vous souhaitez. Sélectionnez l'onglet SQL et collez le script SQL dans la fenêtre. Hit aller.

Regardez ici aussi:

Drop all tables from a MySQL Database without deletion

+1

Génial, et que SQL peut être mis en signet dans phpMyAdmin pour que je puisse le réutiliser. – Joshua

2

Malheureusement, il n'y a pas TRUNCATE DATABASE ou équivalent. Cela dit, vous pouvez probablement utiliser une sorte de procédure stockée qui traverse toutes les tables de votre base de données et les tronquer. I found something of that kind here, mais je ne sais pas si cela fonctionne. (Vous devriez aussi lire la discussion sur les commentaires)

3

vous pourriez commencer par cette requête

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

Et itérer ces résultats pour construire une chaîne SQL dynamique à la hauteur de '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

Le TRUNCATE TABLE instruction va vider complètement une table (MySql 3.23 et ci-dessus).

Vous pouvez créer un script que vous pouvez réutiliser pour une base de données particulière. Ce n'est pas générique mais vous évite de créer une nouvelle base de données + connexion chaque fois que vous voulez commencer avec un nouveau DB.

Pour créer un script, procédez comme suit: Dans votre navigateur Web, accédez à phpMyAdmin et sélectionnez la base de données. Cliquez sur l'onglet SQL et exécutez 'SHOW TABLES'. Choisissez le format d'imprimante et copiez le contenu dans un éditeur de texte.

maintenant pour chaque nom de table que vous récrire dans le format:

TRUNCATE TABLE <tablename>; 

Remarque: Vous pouvez utiliser une expression régulière si vous avez beaucoup de tables

+0

Si vous tronquez une table comme celle-ci la clé primaire commencera-t-elle à 1? – JRowan

+0

Nevermind cela m'a dit http://www.mainelydesign.com/blog/view/difference-between-truncate-empty-delete-from-in-mysql – JRowan

1

Vous pouvez exporter les structures de table uniquement comme cela:

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

puis supprimez la base de données entière, recréer et restaurer à partir de la sauvegarde.

Assez facile pour tout écrire.

+0

La question à l'origine dit: "sans laisser tomber la base de données" ... – Amr

4

Nous pouvons tronquer toutes les tables de données par phpMyAdmin en réalité!

En phpMyAdmin, vous pouvez le faire comme suit:

1) sélectionner u DB et effectuer certaines opérations d'exportation comme la façon suivante:

sélectionnez Exporter la méthode personnalisée

  • select « Table Dump -> data 'dans les options spécifiques au format
  • Sélectionnez' Ajouter instruction DROP TABLE ... 'dans Options de création d'objet.

Par cette étape, phpMyAdmin nous aide à créer un script SQL de la liste complète de toutes les tables

3) effectuer certaines opérations d'importation pour supprimer et créer chaque table vide, un par un par ce script

enter image description here

+0

C'est l'une des meilleures réponses car la question initiale posée à propos de PhpMyAdmin, pas de SQL normal, et les appels de console peuvent ne pas être une option si l'utilisateur n'a aucun privilège pour le faire. – OMA

0

En fait, est allé plus loin et a écrit ceci:

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; 

Il Selec ts les noms de table de schéma fourni YOUR_TABLE_SCHEMA et les met dans une variable utilisateur @command, la formation d'une requête pour chacun d'eux comme ceci: TRUNCATE TABLE TABLE_NAME;

Ensuite je prépare juste instruction sélectionnée et l'exécuter. Notez que vous devez déclarer la variable utilisateur avant la requête, sinon ce sera 0 et gâcher notre instruction.

Tutorial

aide TABLE MySQL DROP pour supprimer des tables existantes

14

à mon humble avis la solution la plus simple est:

  • Dans phpmyadmin sélectionnez la base de données que vous souhaitez tronquer dans le databases- liste (côté gauche)
  • Dans la vue principale, faites défiler vers le bas, vous verrez un checkbo x "Cocher tout" et à côté une liste déroulante dans laquelle vous pouvez sélectionner "Vide". Terminé.
+3

Ceci est LA meilleure réponse, car elle est facile, au point et c'est la seule réponse qui fait exactement ce que la question d'origine a demandé (supprimer toutes les tables en utilisant PhpMyAdmin, pas les appels SQL ou console). La prochaine meilleure réponse est celle de John Yin, mais même s'il a utilisé PhpMyAdmin, sa méthode n'est utile que lors de l'importation d'un très similaire avec les mêmes tables. – OMA

+0

Absolument la meilleure réponse en utilisant l'interface utilisateur. – notthehoff

Questions connexes