gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:32:55 25 4
gpt4 key购买 nike

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

我有一个文本文件,它指定了我要为哪些表转储数据(称为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com