Effacer toutes les tables d’une base MySQL

Avoir un dump MySQL de qualité n’est pas toujours évident pour diverses raisons, souvent il manque les instructions pour supprimer les tables et les recréer, ce qui implique un travail manuel assez fastidieux.

Voici un petit script qui permet de supprimer toutes les tables d’un base MySQL nommée « hotel_arles » et dont les tables sont préfixées par « hotel_arles_ ».

On notera que le script accède en lecture à la table information_schema, cela nécessite d’avoir un accès en lecture à cette table


​-- set table schema and pattern matching for tables SET @schema = 'hotel_arles'; SET @prefix = 'hotel_arles_%'; SET SESSION group_concat_max_len = 1000000; -- build dynamic sql (DROP TABLE tbl1, tbl2...;) SELECT DISTINCT CONCAT('DROP TABLE ', GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';') INTO @droplike FROM information_schema.tables WHERE table_schema = @schema AND table_name LIKE @prefix; -- display the dynamic sql statement -- SELECT @droplike; -- execute dynamic sql PREPARE stmt FROM @droplike; EXECUTE stmt; DEALLOCATE PREPARE stmt;

Si vos tables sont imbriquées par des contraintes d’intégrité référentielles, il faut préalablement les supprimer (ALTER TABLE … DROP CONSTRAINT). Pour ce faire vous pouvez utiliser la vue d’information de schéma INFORMATION_SCHEMA.TABLE_CONSTRAINTS en cherchant les contraintes de type « FOREIGN KEY ». En général, ce qui sont capable de mettre des contraintes d’intégrité sont aussi capable de fournir un dump correct.

Il suffit de lancer la commande suivante dans un Shell.

mysql -u root -p < tools/drop_all_tables.sql

Category: Développement

Étiquettes :

- 5 mars 2014

Laisser un commentaire

Your email address will not be published / Required fields are marked *