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

Ignorer les tables dans mysqldump en fonction d'un modèle

Malheureusement mysqldump nécessite que les noms de table soient entièrement qualifiés, vous ne pouvez donc pas spécifier un paramètre en tant que modèle regex.

Vous pouvez cependant utiliser un script pour générer votre mysqldump en le faisant se connecter à information_schema et lister toutes les tables en utilisant quelque chose comme :

SELECT TABLE_NAME, TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('INFORMATION_SCHEMA', 'mysql', 'PERFORMANCE_SCHEMA');

Et puis le faire générer --ignore-table paramètres pour tous les noms de table qui correspondent à la regex de ^test .

Pour vider uniquement le schéma et aucune donnée, vous pouvez utiliser --no-data=true comme paramètre.

Si vous voulez tout obtenir pour toutes les tables non test mais uniquement le schéma d'une autre table, vous devez utiliser deux commandes mysqldump distinctes (une pour la table ignore pour toutes les tables de test plus le schéma uniquement et une autre pour uniquement le schéma de la table de schéma uniquement) avec le second ajouté au fichier de sortie en utilisant le >> ajouter opérateur .

Ainsi, votre script résultant pourrait générer quelque chose comme :

mysqldump -u root -ptoor databaseName --ignore-table=testTable1 --ignore-table=testTable2 --ignore-table=testTable3  --ignore-table=schemaOnlyTable > mysqldump.sql

mysqldump -u root -ptoor databaseName schemaOnlyTable --no-data=true >> mysqldump.sql