您如何mysqldump特定表?


Answers:


540

如果要从mydb转储表t1,t2和t3

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。


43
要排除少数几个表格,你可以使用-忽略表=表1 -忽略表=表2 -忽略表=表3等
codewaggle

@codecowboy,您可以更改SQL="${SQL} AND table_name NOT IN ('t1','t2','t3')"SQL="${SQL} AND table_name NOT LIKE 'foo\_%'"。我刚刚对其进行了测试,并且可以正常工作。您可以将条件更改为'%foo%',以获取名称中包含“ foo”的所有表(包括“ food”,“ fool”等)。
Buttle Butkus 2014年

1
考虑到参数的存在,将表排除在外的方法难道不是多余的--ignore-table吗?如果是这样,从答案中删除脚本并推荐就更好了--ignore-table吗?
Mark Amery

@codewaggle给出错误,Illegal use of option --ignore-table=<database>.<table>除非我将表指定为schemaname.tablename
WAF

很酷的东西,任何原因SQL变量不是多行的吗?
sdkks

72

关于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

29

当您有多个表时,最好运行以下命令:

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]

请记住,这些命令只能在一行中键入。


11

您可以使用以下命令轻松完成此操作:

mysqldump -uusername -ppassword dbname \
  --ignore-table=schema.tablename1    \
  --ignore-table=schema.tablename2    \
  --ignore-table=schema.tablename3 > mysqldump.sql

4
--ignore-table将从mysqldump中排除某些表,而不包括。:)
Praveen Prasannan

3
但是,可以列出所有要排除的表,它只会丢弃其余的表:-)
Colin't Hart 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.