我的数据库有3个表:table1,table2和table3
我想在这个数据库上做一个mysqldump,条件如下:
目前,我使用2个mysqldump语句执行此操作
mysqldump -u user -p -d db > db_structure.sql
mysqldump -u user -p db --ignore-table=db.table3 > table1_and_table2_data.sql
Run Code Online (Sandbox Code Playgroud)
以它们被转储的相同顺序导入它们(结构,然后是table1和table2中的数据)
有没有办法将它组合成一个mysqldump命令?
Cfr*_*eak 40
您不能将它们组合在一个命令中,但可以同时执行这两个命令并输出到同一个文件.
mysqldump -u user -p --no-data db > structure.sql; mysqldump -u user -p db table1 table2 >> structure.sql
Run Code Online (Sandbox Code Playgroud)
为了避免必须输入两次密码,你可以做-ppassword(注意空间不足!).也可以--no-data在第一个命令中使用,或者最终得到数据.当你只做一个数据库时不需要-d.
鉴于您可能希望将输出通过管道输出到另一个命令,而不是仅仅重定向到文件并在下一个命令中附加到该文件,您可以尝试(从stask示例中修改):
(mysqldump -u $1 -p$2 -d db && mysqldump -u $1 -p$2 db --ignore-table=db.table3) |\
your_command
Run Code Online (Sandbox Code Playgroud)
......在我的情况下:
(mysqldump -u $1 -p$2 -d db && mysqldump -u $1 -p$2 db --ignore-table=db.table3) |\
gzip -9 > filename.sql.gz
Run Code Online (Sandbox Code Playgroud)
将两个mysqldump命令括在括号中会创建一个子shell,其输出我们将其导入gzip,然后将其重定向到一个文件中.
PS:我也无法将它组合成一个单独的mysqldump调用.
| 归档时间: |
|
| 查看次数: |
19403 次 |
| 最近记录: |