411 votes

Tronquer toutes les tables dans une base de données MySQL dans une commande?

Existe-t-il une requête (commande) pour tronquer toutes les tables d'une base de données en une seule opération? Je veux savoir si je peux le faire avec une seule requête.

384voto

battousaix Points 1211

laissez tomber

mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql -e "drop table $table" DATABASE_NAME; done

tronquer

mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql -e "truncate table $table" DATABASE_NAME; done

216voto

lalit choudhary Points 169

tronquez plusieurs tables de base de données sur l'instance Mysql

 SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';') 
FROM INFORMATION_SCHEMA.TABLES where  table_schema in (db1_name,db2_name);
 

Utiliser le résultat de la requête pour tronquer les tables

Note: peut-être que vous aurez cette erreur:

 ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
 

Cela se produit s'il existe des tables avec des références de clés étrangères à la table que vous essayez de supprimer / tronquer.

Avant de tronquer des tables Tout ce que vous devez faire est:

 SET FOREIGN_KEY_CHECKS=0
 

Tronquez vos tables et remplacez-les par

 SET FOREIGN_KEY_CHECKS=1
 

83voto

Capt.Nemo Points 553

Utilisez phpMyAdmin de cette manière:

Database View => Check All (tables) => Vide

Ce n'est pas MySQL CLI-fu, mais bon, ça marche!

24voto

beach Points 4116

MS SQL Server 2005 + (supprimer l’impression pour exécution effective...)

Si votre plateforme de base de données prend en charge les vues INFORMATION_SCHEMA, prendre les résultats de la requête suivante et l’exécuter.

Essayez ceci pour MySQL :

Ajouter un point-virgule à Concat rend plus facile à utiliser par exemple au sein de mysql workbench.

22voto

mbjungle Points 59

J’ai trouvé ceci pour supprimer toutes les tables dans une base de données :

Utile si vous êtes limité par la solution (pas en mesure de supprimer une base de données entière) d’hébergement.

J’ai modifié pour tronquer les tableaux. Il n’y a aucun «--add-tronquer-table » de mysqldump, alors j’ai fait :

travaille pour moi--edit, fixant une faute de frappe dans la dernière commande

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X