Je veux garder t1, t2 et supprimer toutes les autres tables.Existe-t-il une commande MySQL pour implémenter quelque chose comme "drop tables sauf t1, b2"?
Répondre
Vous pouvez utiliser information_schema
pour rechercher des noms de table et même formater les résultats sous la forme d'un groupe d'instructions DROP
.
SELECT CONCAT('DROP TABLE ', TABLE_NAME, '; ')
FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name NOT IN ('foo', 'bar', 'baz');
(La fonction DATABASE()
renvoie le moment use
« base de données d.)
En utilisant PREPARE
et EXECUTE
, vous pouvez même éviter le copier & coller et (dans MySQL 5.0.13 et versions ultérieures) écrire un stocké procédure pour le faire.
C'est ce que je voulais dire. :-) Ou quelque chose comme ça. –
Je ferais très attention à mettre ceci en live code. La suppression de tables est généralement une tâche dbadmin ou cron/control plutôt qu'une tâche à coder. Sinon, le droit de supprimer des tables ne devrait jamais être attribué au code en direct qui pourrait être plus tard vulnérable à XSS. –
Vous pouvez utiliser mysqldump pour générer une liste d'instructions DROP TABLE, filtrer celles que vous ne voulez pas, puis les rediriger dans le client mysql. Voici comment nous construisons que jusqu'à
Tout d'abord, voici une liste des déclarations de table DROP TABLE pour la base de données
mysqldump -uUSERNAME -pPASSWORD--add-drop-table --no-data DATABASE| \
grep ^DROP
Maintenant, nous pouvons tuyau à travers grep avec -v pour inverser le match - nous voulons des déclarations que don « t mentionner les tables nous retenir (une autre façon de faire serait d'options --ignore tables à mysqldump)
mysqldump -uUSERNAME -pPASSWORD--add-drop-table --no-data DATABASE| \
grep ^DROP |
grep -v 'foo\|bar'
Enfin, une fois que vous êtes confiant, vous pouvez tuyau de nouveau dans MySQL
mysqldump -uUSERNAME -pPASSWORD--add-drop-table --no-data DATABASE| \
grep ^DROP | \
grep -v 'foo\|bar' | \
mysql -uUSERNAME -pPASSWORD DATABASE
- 1. Quelque chose comme Crystal Reports pour PHP?
- 2. composant ImageGrid ou quelque chose comme ça
- 3. Quelque chose comme SciPy dans Ruby?
- 4. recherche d'interface pour quelque chose comme Appendable ou OutputStream
- 5. Comment emballer un int [,] avec quelque chose comme une ReadOnlyCollection?
- 6. Y a-t-il quelque chose comme Acegi pour PHP?
- 7. Je voudrais trouver quelque chose comme gkrellm pour Mac
- 8. Y at-il quelque chose comme jquery pour WPF/XAML?
- 9. Quelle est la différence entre déclarer comme nouveau et comme quelque chose = quelque chose de nouveau dans vb.net?
- 10. Comment réaliser quelque chose comme le classement latin1_general_ci de MySQL en PHP?
- 11. url MVC réécrire quelque chose comme http://controller.website.com
- 12. Ruby analyseur de code source (quelque chose comme pylint)
- 13. C++ vecteur littéraux, ou quelque chose comme eux
- 14. Comment faire quelque chose comme ça dans Scala?
- 15. Quelque chose comme mapM, mais pour les tableaux? (comme arrayMap, mais mappage d'une fonction impure)
- 16. PHP 'quelque chose comme widget' conception du code
- 17. SQL Server offre-t-il quelque chose comme MySQL? ON DUPLICATE KEY UPDATE
- 18. Dans Flex, existe-t-il quelque chose comme une référence «this» pour un composant MXML?
- 19. Y at-il quelque chose comme une base de données de traduction pour les chaînes?
- 20. Est-il possible de sortir d'une procédure stockée mysql avec quelque chose comme le retour?
- 21. Quelque chose comme print END << END; en C++?
- 22. Il y a vraiment quelque chose comme Objective C++?
- 23. Quelque chose fonctionne comme "did Init" ?? [objectif-c]
- 24. Quelque chose comme les paramètres C# en C++?
- 25. Quelque chose comme dictionnaire, mais peut stocker plus d'une valeur?
- 26. Utiliseriez-vous cela ou avez-vous déjà pensé à quelque chose comme ça? (Contrôleur Nav de commande pour iPhone)
- 27. Compte MySQL PHP (*) retournant quelque chose de bizarre
- 28. Plusieurs tables de données en PHP/MySQL?
- 29. Y a-t-il quelque chose comme 'autotest' pour les tests unitaires Python?
- 30. Comment pourriez-vous implémenter quelque chose comme les bases de données d'Excel 2007 en HTML/CSS/JS?
Si vous vouliez supprimer toutes les tables mais pas la base de données elle-même, que feriez-vous pour cela? Utilisez le même tour mais excluez ceux-ci ... –
@Workshop Alex, désolé, ne vous a pas attrapé. – omg
Normalement, lorsque vous voulez supprimer toutes les tables, vous supprimez simplement la base de données. (Cela supprimera également les procédures stockées et les vues qui pourraient devenir invalides de cette façon.) Si vous voulez supprimer uniquement les tables, vous devez les supprimer une par une. Si vous voulez tout supprimer, sauf les deux, vous devez toujours les supprimer un par un, mais ignorer la suppression pour ceux qui doivent rester. –