Comment supprimer quelques tables d'un fichier SQL volumineux?

0

J'ai un fichier SQL avec une taille d'environ 3 Go. Donc, cela prend un certain temps à restaurer à chaque fois que je prenais une décharge récente de la production.

Dans cette table, 'access_log' lui-même a pris 2,2 Go, ce qui n'est qu'un journal. À des fins de test, il est correct de laisser cette table vide. Est-il possible d'éviter cette table lors de la restauration de la base de données?

Ma commande pour restaurer ressemble à

mysqldump -u uname -p pwd --no-data site_name_com | awk '/DROP TABLE/ { print }' | mysql -u uname -p pwd site_name_com && mysql -u uname -p pwd site_name_com < /..file_path../..file_name.sql

Comment créer un vidage de base de données excluant une table spécifique?

Pasu
la source

Réponses:

1

Le mysqldumpformat de sortie est simplement une longue liste de commandes SQL, destinées à être réintroduites dans le mysqlprogramme.

Vous pouvez utiliser mysqldump --ignore-table=<database>.<table>pour créer un vidage qui n'inclut pas du access_logtout la table.

Ensuite, vous pouvez utiliser mysqldump --no-data=truepour vider uniquement la structure de la access_logtable.

Si vous concaténez les deux, vous aurez un script de vidage complet qui exclut les données de la access_logtable.

Tant que vous n'avez besoin de faire cela que pour une ou plusieurs tables, et de contrôler l'invocation mysqldump d'origine, cela devrait être une solution pratique.

Googlé pour mysqldump exclude table , ce qui a amené ma principale source d’inspiration, à savoir la question " Passer certaines tables avec mysqldump Stack Overflow" et sa réponse acceptée .

un CVn
la source