Effacer toutes les tables d'une base MySQL

Effacer toutes les tables d'une base MySQL

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
comments powered by Disqus

Voir aussi

A la une
  • Rencontre du numérique 2019 - Nîmes
  • référencement naturel d'un hôtel
  • Développeur eZ Platform
  • Tech lead Symfony
  • Expert Qualité Web

Copyright - Sylvain FIX

2009 - 2019