Comment puis-je supprimer toutes les bases de données MySQL avec un certain préfixe?
J'ai besoin de déplacer des centaines de bases de données mysql qui partagent tous un préfixe commun, mais ont des id aléatoire que le reste de leur nom ( par exemple. database_0123456789, database_9876543210 ). Toutes ces bases de données sont sur le même serveur. Il existe d'autres bases de données sur le même serveur que je ne veux pas laisser tomber.
C'est ce que j'aimerais faire:
DROP DATABASE `database_*`;
Comment puis-je supprimer ces efficacement? Est-il une requête MySQL, je peux utiliser? Peut-être un script shell?
source d'informationauteur T. Brian Jones | 2013-08-16
Vous devez vous connecter pour publier un commentaire.
La syntaxe de la
DROP DATABASE
instruction prend en charge qu'un seul nom de base de données. Vous aurez besoin d'exécuter un distinctDROP DATABASE
déclaration pour chaque base de données.Vous pouvez exécuter une requête pour renvoyer une liste de noms de base de données, ou peut-être plus utile, pour générer les états financiers réels, vous devez exécuter. Si vous voulez supprimer toutes les bases de données qui commencent par la chaîne littérale
database_
(y compris le caractère de soulignement), puis:Copier les résultats de cette requête, et vous avez vous-même un script SQL.
(Enregistrer les résultats sous forme de fichier texte simple (par exemple, dropdbs.sql), revue avec votre éditeur de texte préféré pour supprimer toute dingo en-tête et pied de page lignes, assurez-vous que le script ressemble à droite, l'enregistrer, puis à partir de la ligne de commande mysql,
mysql> source dropdbs.sql
.)Évidemment, vous pourriez obtenir plus sophistiqué que cela, mais pour une fois, c'est probablement le plus efficace.)
N'avez pas besoin d'un fichier de script externe. Une procédure stockée à l'aide de la préparation des états financiers pourrait faire l'affaire:
Une fois que vous avez cette procédure, vous avez juste à:
Quand fait:
Modifiant spencer7593 réponse
Voici la commande pour trouver les résultats souhaités et les enregistrer dans le fichier où est le préfixe préfixe de base de données
si vous obtenez la permission refusée alors changer les permissions de dossier en 777 ou de changer de dossier de groupe à mysql à l'aide de cette
puis exécutez cette requête
Cette question n'a pas de réponse sans la création d'un fichier en premier.
Notre build server crée automatiquement une base de données pour chaque sujet de la branche lors de l'exécution des tests unitaires. Après information_schema requêtes obtenir vraiment lent des causes de notre échec des tests.
J'ai créé un fichier de commandes qui s'exécute tous les jours. Je ne veux pas avoir affaire avec des fichiers temporaires. Voici donc ma solution.