Rol*_*DBA 649
如果要从 mydb 转储表 t1、t2 和 t3
mysqldump -u... -p... mydb t1 t2 t3 > mydb_tables.sql
Run Code Online (Sandbox Code Playgroud)
如果您在 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
Run Code Online (Sandbox Code Playgroud)
试一试 !!!
@RoryDonohue向我指出GROUP_CONCAT函数需要扩展其最大长度。我将会话变量group_concat_max_len添加到我的答案中,最大长度为 10K。谢谢,@RoryDonohue。
cod*_*gle 84
他包含的脚本是包含 ( 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
Run Code Online (Sandbox Code Playgroud)
小智 32
当你有多个表时,运行这样的事情会好得多:
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]
Run Code Online (Sandbox Code Playgroud)
或者像这样想:
mysqldump -u [user] -p[password] databasename `echo "show tables like 'table_name_%';"
| mysql -u[user] -p[password] databasename
| sed '/Tables_in/d'` > [target_file]
Run Code Online (Sandbox Code Playgroud)
请记住,这些命令只能在一行中输入。
小智 16
您只需使用以下命令即可完成:
mysqldump -uusername -ppassword dbname \
--ignore-table=schema.tablename1 \
--ignore-table=schema.tablename2 \
--ignore-table=schema.tablename3 > mysqldump.sql
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
890447 次 |
| 最近记录: |