Sur le serveur MySQL, il n'existe pas de commandes pour supprimer d'un coup toutes les tables d'une base de données.
On peut soit les supprimer une par une, soit supprimer puis recréer la base, au risque de perdre des infos tels que les droits d'accès.
Voici donc une méthode simple pour supprimer d'un coup toutes les tables d'une base de données MySQL.
1. Prérequis
il faut préalablement récupérer les UnxUtils. Ce sont des utilitaires usuels Linux qui ont été portés sur Windows (sed, grep,...)
Il suffit de les télécharger ici et de les décompresser dans le dossier de votre choix :
http://sourceforge.net/projects/unxutils/
2. Le script de suppression
Notre script de suppression sera un simple fichier .bat dont voici le code :
REM Définition des variables set UnixUtilsPath=C:\Applis\UnxUtils\usr\local\wbin set MySQLPath=C:\Program Files\MySQL\MySQL Server 5.1\bin set dbname=<votre base de donnees> set usr=<utilisateur mysql avec des droits suffisants pour supprimer des tables> set pwd=<le mot de passe associé à cet utilisateur> REM Suppression des tables "%MySQLPath%\mysql" -u%usr% -p%pwd% %dbname% -e "show tables" | "%UnixUtilsPath%\grep" -v Tables_in | "%UnixUtilsPath%\gawk" "{print \"drop table \" $1 \";\"}" | "%MySQLPath%\mysql" -u%usr% -p%pwd% %dbname%
Et c'est tout ? Hé bien oui ! :o)
En fait le script extrait le nom des tables issus d'une commande SHOW TABLES et regénère les commandes DROP TABLE correspondantes, le tout en une seule ligne.
Ce script travaille en local, mais si on veut l'exécuter à distance, il suffit de rajouter à la commande mysql les paramètres adéquate (--host=..., --port=...)