markdorison Asked: 2011-12-17 12:39:37 +0800 CST2011-12-17 12:39:37 +0800 CST 2011-12-17 12:39:37 +0800 CST 你如何mysqldump特定的表? 772 如何在不包括其余 db 表的情况下转储特定表或表集? mysql backup 4 个回答 Voted Best Answer RolandoMySQLDBA 2011-12-17T12:46:36+08:002011-12-17T12:46:36+08:00 如果要从 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。 codewaggle 2012-12-15T18:06:19+08:002012-12-15T18:06:19+08:00 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 grosshat 2012-09-18T23:35:01+08:002012-09-18T23:35:01+08:00 当您有多个表时,最好运行以下内容: 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] 请记住,这些命令只能在一行中输入。 Vaibhav 2013-09-13T21:57:42+08:002013-09-13T21:57:42+08:00 您可以使用以下命令简单地做到这一点: mysqldump -uusername -ppassword dbname \ --ignore-table=schema.tablename1 \ --ignore-table=schema.tablename2 \ --ignore-table=schema.tablename3 > mysqldump.sql
如果要从 mydb 转储表 t1、t2 和 t3
如果您在 mydb 中有大量表,并且想要转储除 t1、t2 和 t3 之外的所有表,请执行以下操作:
试试看 !!!
更新 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
选项单独排除它们:当您有多个表时,最好运行以下内容:
或者像这样想:
请记住,这些命令只能在一行中输入。
您可以使用以下命令简单地做到这一点: