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

MySQL importe la base de données mais ignore une table spécifique

La réponse acceptée par RandomSeed pourrait prendre beaucoup de temps ! L'importation de la table (juste pour la supprimer plus tard) peut être très coûteuse en fonction de sa taille.

Pour un fichier créé à l'aide de

mysqldump -u user -ppasswd --opt --routines DBname > DBdump.sql

Je reçois actuellement un fichier d'environ 7 Go, dont 6 Go sont des données pour une table de journal dont je n'ai pas « besoin » d'être là ; le rechargement de ce fichier prend quelques heures. Si j'ai besoin de recharger (à des fins de développement, ou si nécessaire pour une récupération en direct), je parcoure le fichier ainsi :

sed '/INSERT INTO `TABLE_TO_SKIP`/d' DBdump.sql > reduced.sql

Et rechargez avec :

mysql -u user -ppasswd DBname < reduced.sql

Cela me donne une base de données complète, avec la table "indésirable" créée mais vide. Si vous ne voulez vraiment pas du tout les tables, supprimez simplement les tables vides une fois le chargement terminé.

Pour plusieurs tables, vous pouvez faire quelque chose comme ceci :

sed '/INSERT INTO `TABLE1_TO_SKIP`/d' DBdump.sql | \
sed '/INSERT INTO `TABLE2_TO_SKIP`/d' | \
sed '/INSERT INTO `TABLE3_TO_SKIP`/d' > reduced.sql

Il y a un 'gotcha' - faites attention aux procédures dans votre dump qui pourraient contenir "INSERT INTO TABLE_TO_SKIP".