Как я могу вывести свою БД с помощью mysqldump и заставить ее пропустить информацию о разделе таблицы? - PullRequest
2 голосов
/ 01 апреля 2012

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

Я хотел бы выполнить команду mysqldump, которая выведет информацию CREATE для таблиц без оператора разбиения (т.е. без "PARTITION BY ...").

Ответы [ 2 ]

1 голос
/ 19 августа 2012

Я не нашел элегантного способа обрезки перегородок. Я использовал следующую часть регулярных выражений:

perl -i -pe 's/^\/\*![0-9]* PARTITION BY.*$/;/' foo.sql

perl -i -pe 's/^.PARTITION.*ENGINE = .*$//' foo.sql

Первое регулярное выражение удаляет открывающий раздел PARTITION BY и заменяет его точкой с запятой, чтобы закрыть предыдущий CREATE TABLE.

Второе регулярное выражение удаляет все объявления разделов.

0 голосов
/ 11 апреля 2012

Вы управляете тем, какие таблицы выводятся, либо явно перечисляя таблицы, либо используя --ignore-table= (http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_ignore-table) - в зависимости от того, что проще.

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

...