Поиск по сайту:

Как исключить таблицы из экспорта MySQL с помощью mysqldump


Настраивая новую среду тестирования, чтобы помочь разработке сделать немного меньше ошибок, я искал, как перенести базу данных, не восстанавливая кучу архивных таблиц, которые нам действительно не нужны на QA.

Логически мы бы переместили эти архивные таблицы в отдельную архивную базу данных, но это потребовало бы много работы, а нам просто не хотелось. Ммм горячие карманы.

Изучив нашу базу данных, мы поняли, что около 90% пространства занимают данные, которые нам действительно не нужны в тестовой среде, и большая часть этих данных находится в паре таблиц.

Решение, конечно, состоит в том, чтобы просто использовать mysqldump с опцией --ignore-table. Одна сложная вещь, которую вам нужно иметь в виду, заключается в том, что вы должны использовать синтаксис dbname.tablename, вы не можете просто указать имя таблицы. Почему?/пожимает плечами

mysqldump -uUser -pPass -hHost --ignore-table=dbname.tablename dbname > db.bak

Если вы хотите исключить несколько таблиц, вы можете использовать один и тот же аргумент более одного раза в командной строке, например:

mysqldump -uUser -pPass -hHost --ignore-table=dbname.table1 --ignore-table=dbname.table2 dbname > db.bak

Вы могли бы подумать, что вы можете просто поместить исключения с пробелами, как вы делаете, когда указываете только определенные таблицы для экспорта в первую очередь. Но нет, это было бы слишком последовательно.

Чтобы снова импортировать этот экспортированный файл на другой компьютер, вы должны использовать что-то вроде этого для запуска всех команд и вставок в файл:

mysql -uUser -pPass -hHost databasename < db.bak