mysqldump整个结构,但仅在单个命令中选择表中的数据

Posted

技术标签:

【中文标题】mysqldump整个结构,但仅在单个命令中选择表中的数据【英文标题】:mysqldump entire structure but only data from selected tables in a single command 【发布时间】:2010-12-18 08:59:42 【问题描述】:

我的数据库有 3 个表:table1、table2 和 table3

我想在这个数据库上做一个mysqldump,条件如下:

所有表的转储结构 只转储table1和table2的数据,忽略table3中的数据

目前,我使用 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

按照转储顺序导入它们(结构,然后是表 1 和表 2 中的数据)

有没有办法将它组合成一个 mysqldump 命令?

【问题讨论】:

【参考方案1】:

您不能将它们组合在一个命令中,但您可以同时执行两个命令并输出到同一个文件。

mysqldump -u user -p --no-data db > structure.sql; mysqldump -u user -p db table1 table2 >> structure.sql

为了避免输入两次密码,您可以使用-ppassword(注意空间不足!)。还要在第一个命令中使用--no-data,否则你最终也会得到数据。当你只做一个数据库时,不需要 -d。

【讨论】:

感谢您的回答!但是我想知道现在是否仍然不可能以更优雅的方式做到这一点。 @EmilioNicolás 我不知道 -d--no-data 的别名,请查看docs。使用哪一个并不重要。【参考方案2】:

鉴于您可能希望像我一样将输出通过管道传输到另一个命令,而不是仅仅重定向到一个文件并在下一个命令中附加到该文件,您可以尝试(根据 stask 的示例修改):

(mysqldump -u $1 -p$2 -d db && mysqldump -u $1 -p$2 db --ignore-table=db.table3) |\
your_command

...在我的情况下:

(mysqldump -u $1 -p$2 -d db && mysqldump -u $1 -p$2 db --ignore-table=db.table3) |\
gzip -9 > filename.sql.gz

将两个 mysqldump 命令括在括号中会创建一个子 shell,我们将其输出通过管道传输到 gzip,然后将其重定向到一个文件中。

PS:不过,我也无法将它合并到一个 mysqldump 调用中。

【讨论】:

【参考方案3】:

我不认为你可以在一个命令中做到这一点。但是您绝对可以将输出合并到一个文件中。为什么不将它包装在一些执行以下操作的 shell 脚本中:

mysqldump -u $1 -p$2 -d db > dump.sql && mysqldump -u $1 -p$2 db --ignore-table=db.table3 >> dump.sql

您将使用两个参数运行此脚本:用户名和密码。

【讨论】:

【参考方案4】:

实际上很简单,在不需要数据的表上使用 --where 子句,并给它一个始终为假的条件。例如,在 foo 和 gah 上加载数据,在 bar 上仅加载模式:

mysqldump -u ... -p... myDatabase foo bar --where='1=2' gah > myfile.sql

所以是的,您可以在一行中执行此操作。

【讨论】:

【参考方案5】:

您可以删除INSERT INTO ... 部分:

mysqldump \
  --opt \
  -u $DB_USER -p$DB_PASS \
  $DB_NAME \
  | grep -v 'INSERT INTO `table3`' \
  | grep -v 'INSERT INTO `table4`'

【讨论】:

以上是关于mysqldump整个结构,但仅在单个命令中选择表中的数据的主要内容,如果未能解决你的问题,请参考以下文章

mysql 导出表结构和表数据 mysqldump用法

powerdesider怎样根据mysql已有的表导出结构

mysqldump命令怎么找到

拆分音频文件,但仅在暂停中

mysql数据库表结构导出

mysql 导出/导入表结构和表数据