MySQL dump所有表的结构和部分数据

标签 mysql sql command-line-interface mysqldump

我试图转储我们数据库中所有表的结构,然后只转储我特别想要的那些数据,但我似乎做错了什么,因为我没有为创建的空表我从数据转储中排除的那些。

我有一个文本文件,它指定了我要为哪些表转储数据(称为 showtables.txt):

SHOW TABLES FROM mydb
WHERE Tables_in_mydb NOT LIKE '%_history'
AND Tables_in_mydb NOT LIKE '%_log';

然后我执行这个命令来转储所有表的结构,然后在文本文件中转储该查询返回的表的数据:

mysqldump -u root -pmypassword mydb --no-data > mydump.sql; mysql -u root -pmypassword < showtables.txt -N | xargs mysqldump mydb -u root -pmypassword > mydump.sql -v

我得到了 showtables 查询结果中包含的所有表的转储,但我没有得到其余表的结构。

如果我只将结构部分作为单个命令运行,则效果很好,我会为所有表转储结构。但是将它与数据转储结合起来似乎不起作用。

你能指出我哪里出了问题吗?

谢谢。

最佳答案

我认为你的命令行参数顺序错误(重定向到文件应该是结束),你需要一个额外的参数给 xargs 这样我们就可以指定数据库名称到 mysqldump。

此外,您需要附加 >>> 转储数据,否则您将覆盖每个表的 mydump.sql 文件:

mysqldump -u root -pmypassword mydb --no-data > mydump.sql
mysql -u root -pmypassword -N < showtables.txt | xargs -I {} mysqldump -v -u root -pmypassword mydb {} >> mydump.sql

来源:http://www.cyberciti.biz/faq/linux-unix-bsd-xargs-construct-argument-lists-utility/

关于MySQL dump所有表的结构和部分数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21135407/

相关文章:

php - 在 foreach 循环中从多个表中提取数据

php - 在 codeIgniter 中获取最新的更新记录 ID?

php - 从多个表中选择列的总和并按 id 分组

mysql - 仅返回1条记录

sql - 使用 Microsoft SQL Server 管理复制表

mysql - 如何优化以下sql查询?

python - 将 click.MultiCommand 与类方法结合使用

linux - Linux 上的 Subversion CLI 默认文本编辑器

command-line-interface - 如何准确找到移动的工作空间?

mysql - 在 SET 字段类型中检索具有匹配值的表行