Мне нужно сделать дамп базы данных, содержащей 50 нечетных таблиц, из которых я хочу исключить около 15 нечетных, которые имеют префикс exam_
Я пытался mysqldump --ignore-table=dbname.exam_*
и даже пытался --ignore-table=dbname.exam_%
Это не сработало, как ожидалось. Я должен был использовать --ignore-table
несколько раз.
Редактировать: я видел несколько сценариев оболочки, которые перечисляют tables not like tablename_%
и передают его mysqldump
.
Тем не менее, я хотел бы знать, есть ли опция в mysqldump или mysql, как таковая, чтобы сделать то же самое без необходимости сценария.
Редактировать-добавить: в конечном итоге использовать сценарий для дампа БД за исключением таблиц, используя ignore-table=
несколько раз.
TABLES=`mysql --skip-column-names [DB-NAME] -e 'show tables' | grep -v 'exam_'`
mysqldump [DB-NAME] $TABLES > mysqldump.sql
Ответы:
Нет, в
mysqldump
команде нет такой опции , как говорят в документации :источник
mysqldump --all-databases
просто проверить, нет ли ошибок или просто перейти к следующему дБ.Вы можете получить имена таблиц из mysql, а затем использовать их для построения параметров дампа mysql.
В приведенном ниже примере просто замените «someprefix» на ваш префикс (например, «exam_»).
SHOW TABLES
Запрос может быть изменен , чтобы найти другие наборы таблиц. Или вы можете использовать запрос кINFORMATION_SCHEMA
таблице, чтобы использовать еще больше критериев.Это было построено с помощью этого ответа о получении «всех таблиц с исключением в bash»: https://stackoverflow.com/a/9232076/631764
и этот ответ о пропуске таблиц с использованием некоторого bash: https://stackoverflow.com/a/425172/631764
источник
Я думаю, что использование
information_schema
- хороший путь для этого.источник