Mysql
 sql >> Base de données >  >> RDS >> Mysql

Supprimer les bases de données MySQL correspondant à un caractère générique ?

L'idée de base est d'exécuter "afficher les tables" dans votre base de données et d'utiliser les résultats pour sélectionner les tables souhaitées. Je ne pense pas que MySQL vous permette de faire quoi que ce soit avec le jeu de résultats de "afficher les tables", mais je me trompe probablement.

Voici une solution simple et rapide utilisant le shell :

mysql -u your_user -D your_database_name -e "show tables" -s | 
  egrep "^Whatever_" | 
  xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

Cela imprimera toutes les commandes shell pour supprimer les tables commençant par "Whatever_". Si vous voulez qu'il exécute réellement ces commandes, supprimez le mot "echo".

MODIFIER :J'ai oublié d'expliquer ce qui précède! Je ne sais pas si vous êtes familier avec les scripts shell, mais voici :

mysql -u your_user -D your_database_name -e "show tables" -s

imprime une liste de toutes vos tables, avec l'en-tête "Tables_in_your_database_name". La sortie de celui-ci est canalisée (le symbole | signifie "canalisé", comme dans transmis) via la commande suivante :

egrep "^Whatever_"

recherche toutes les lignes qui commencent (ces symboles ^ signifient "êtres avec") le mot "Whatever_" et n'imprime que celles-ci. Enfin, nous dirigeons cette liste de tables "Whatever_*" via la commande :

xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

qui prend chaque ligne dans la liste des noms de table, et l'insère à la place du "@@" dans la commande

echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

Donc, si vous aviez un tas de tables nommées "Whatever_1", "Whatever_2", "Whatever_3", les commandes générées seraient :

echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_1"
echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_2"
echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_3"

Ce qui produirait ce qui suit :

mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_1"
mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_2"
mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_3"

J'espère que c'était assez détaillé et que je ne bats pas quelqu'un sur la tête avec trop d'informations. Bonne chance et soyez prudent lorsque vous utilisez la commande "DROP TABLE" !