Как вы используете таблицы (ы) mysqldump?
Как я могу сбросить определенную таблицу или набор таблиц, не включая остальные таблицы db?
4 ответа
Если вы сбрасываете таблицы t1, t2 и t3 из mydb
mysqldump -u... -p... mydb t1 t2 t3 > mydb_tables.sql
Если у вас есть тонна таблиц в mydb, и вы хотите сбросить все, кроме t1, t2 и t3, сделайте следующее:
DBTODUMP=mydb
SQL="SET group_concat_max_len = 10240;"
SQL="${SQL} SELECT GROUP_CONCAT(table_name separator ' ')"
SQL="${SQL} FROM information_schema.tables WHERE table_schema='${DBTODUMP}'"
SQL="${SQL} AND table_name NOT IN ('t1','t2','t3')"
TBLIST=`mysql -u... -p... -AN -e"${SQL}"`
mysqldump -u... -p... ${DBTODUMP} ${TBLIST} > mydb_tables.sql
Дайте ему попробовать !!!
ОБНОВЛЕНИЕ 2014-03-06 10:15 EST
@RoryDonohue указал мне, что GROUP_CONCAT должна иметь максимальную длину , Я добавил переменную сеанса group_concat_max_len в мой ответ с максимальной длиной 10K. Спасибо, @RoryDonohue.
Заметка для расширения на ответе RolandoMySQLDBA .
Сценарий, который он включил, является отличным подходом для включения (and table_name in
) или исключения (and table_name NOT in
) списка таблиц.
Если вам просто нужно исключить одну или две таблицы, вы можете исключить их отдельно с помощью опции --ignore-table
:
mysqldump -u -p etc. --ignore-table=Database.Table1 --ignore-table=Database.Table2 > dump_file.sql
Когда у вас больше нескольких таблиц, гораздо лучше работает что-то вроде этого:
mysql databasename -u [user] -p[password] -e 'show tables like "table_name_%"'
| grep -v Tables_in
| xargs mysqldump [databasename] -u [root] -p [password] > [target_file]
Или что-то вроде этого:
mysqldump -u [user] -p[password] databasename `echo "show tables like 'table_name_%';"
| mysql -u[user] -p[password] databasename
| sed '/Tables_in/d'` > [target_file]
Помните, что эти команды должны вводиться только в одной строке.
Вы можете сделать это, просто используя команду ниже:
mysqldump -uusername -ppassword dbname \
--ignore-table=schema.tablename1 \
--ignore-table=schema.tablename2 \
--ignore-table=schema.tablename3 > mysqldump.sql