J'ai besoin de faire un vidage d'une base de données contenant 50 tables impaires dont je veux exclure environ 15 impaires qui ont un préfixe exam_
J'ai essayé mysqldump --ignore-table=dbname.exam_*
et même essayé --ignore-table=dbname.exam_%
Cela n'a pas fonctionné comme prévu. J'ai dû utiliser --ignore-table
plusieurs fois.
Edit: j'ai vu quelques scripts shell qui les listent tables not like tablename_%
et les transmettent mysqldump
.
Cependant, je voudrais savoir s'il existe une option dans mysqldump ou mysql, en tant que telle, pour faire de même sans avoir à le scripter.
Edit-add: finalement utilisé un script pour vider la base de données excluant les tables, en utilisant ignore-table=
plusieurs fois.
TABLES=`mysql --skip-column-names [DB-NAME] -e 'show tables' | grep -v 'exam_'`
mysqldump [DB-NAME] $TABLES > mysqldump.sql
Réponses:
Non, il n'y a pas d'option comme ça dans la
mysqldump
commande, comme le disent les docs :la source
mysqldump --all-databases
Soit dit enVous pouvez obtenir les noms de table que vous voulez à partir de mysql, puis les utiliser pour créer vos paramètres de vidage mysql.
Dans l'exemple ci-dessous, remplacez simplement "someprefix" par votre préfixe (par exemple "exam_").
La
SHOW TABLES
requête peut être modifiée pour trouver d'autres ensembles de tables. Ou vous pouvez utiliser une requête sur laINFORMATION_SCHEMA
table pour utiliser encore plus de critères.Ceci a été construit avec l'aide de cette réponse sur l'obtention de "toutes les tables avec exclusion dans bash": https://stackoverflow.com/a/9232076/631764
et cette réponse sur les tables à sauter avec certains bash utilisés: https://stackoverflow.com/a/425172/631764
la source
Je pense que l'utilisation de la
information_schema
est une bonne voie à suivre pour cela.la source