Как удалить несколько таблиц из большого файла SQL?

3788
Pasu

У меня есть файл SQL размером около 3 ГБ. Так что это занимает много времени, чтобы восстановить каждый раз, когда я взял недавний дамп с производства.

В этой единственной таблице «access_log» потребовалось 2,2 ГБ, что является просто журналом. Для целей тестирования нормально, чтобы эта таблица была пустой. Есть ли способ избежать этой таблицы при восстановлении базы данных.

Моя команда для восстановления выглядит

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 

Как сделать дамп базы данных, исключающий одну конкретную таблицу?

0

1 ответ на вопрос

1
a CVn

The mysqldump output format is simply a long list of SQL commands, meant to be fed back into the mysql program.

You can use mysqldump --ignore-table=<database>.<table> to create a dump that does not include the access_log table at all.

Then you can use mysqldump --no-data=true to dump just the structure for the access_log table.

If you concatenate the two, you will have a complete dump script that excludes the data for the access_log table.

As long as you only need to do this for one or a few tables, and control the original mysqldump invocation, that should be a practical solution.

Googled for mysqldump exclude table, which brought up my main source of inspiration which was the Skip certain tables with mysqldump Stack Overflow question, and its accepted answer.