14-08-2009, 11:13 AM
Tu peux tenter un truc qui peut potentiellement marcher... Je te suggère tout de même vivement de sauvegarder avant.
D'abord, fait la liste des tables que tu ne veux pas supprimer. Ensuite, execute cette requête dans phpmyadmin :
Dans cette requête, tu remplaces db_name par le nom de ta base (seconde ligne, dans le select) et table_1, table_2 par la liste des tables que tu ne veux pas supprimer.
Que fait cette requête ? Elle créé dans le serveur SQL une nouvelle fonction qui va supprimer une table de celles que tu veux supprimer. Ca ne les supprime qu'une par une. Pour lancer cette fonction, tu fais :
Et tu fais cette requête-là tant qu'il te reste des tables à supprimer. Ensuite, pour alléger le serveur tu vires la procédure :
Et normalement ça devrait supprimer toutes les tables que tu ne veux pas. Mais fait un dump avant de tester !
D'abord, fait la liste des tables que tu ne veux pas supprimer. Ensuite, execute cette requête dans phpmyadmin :
Code :
CREATE PROCEDURE suppression()
BEGIN
SELECT @table := table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'db_name' AND table_name NOT IN ('table_1', 'table_2') LIMIT 1;
SET @sql = CONCAT('DROP TABLE ', @table);
PREPARE stmt FROM @sql ;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt ;
END
Dans cette requête, tu remplaces db_name par le nom de ta base (seconde ligne, dans le select) et table_1, table_2 par la liste des tables que tu ne veux pas supprimer.
Que fait cette requête ? Elle créé dans le serveur SQL une nouvelle fonction qui va supprimer une table de celles que tu veux supprimer. Ca ne les supprime qu'une par une. Pour lancer cette fonction, tu fais :
Code :
CALL suppression();
Et tu fais cette requête-là tant qu'il te reste des tables à supprimer. Ensuite, pour alléger le serveur tu vires la procédure :
Code :
DROP PROCEDURE suppression();
Et normalement ça devrait supprimer toutes les tables que tu ne veux pas. Mais fait un dump avant de tester !