gpt4 book ai didi

mysql转储: how to fetch dependent rows

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:22 25 4
gpt4 key购买 nike

我想要一个实时 MySQL 数据库的快照,以便在我的开发机器上使用。问题是数据库太大,所以我的想法是执行:

mysqldump [connection-info-here] --no-autocommit --where="1 limit 1000" mydb > /dump.sql  

我想这会给我数据库 mydb 中每个表的前一千行。我预计生成的数据集会打破很多外键约束,因为一些记录会丢失。因此,我打算在开发机器上运行的应用程序将失败。

有没有办法 mysqldump 数据库样本,同时确保转储的所有记录都遵守键约束? (比如dump了一个外键,那么对应的外表的记录也会被dump掉)。

如果那不可能,你们是如何处理这个问题的?

最佳答案

不,mysqldump 没有选项只转储在外键关系中匹配的行。您已经知道 --where 选项,但那是行不通的。

我和你有同样的任务,转储数据的一个子集,但只转储相关的数据。例如,用于创建测试实例。

我使用 MySQL 多年,担任过 MySQL 顾问和培训师,我努力跟上最新的工具。我从未听说过任何执行此操作的 MySQL 工具。

我可以建议的唯一解决方案是编写您自己的脚本,使用 SELECT...INTO OUTFILE 逐表转储。

有时只为您的特定模式编写自定义脚本比让某人编写适用于每个人模式的通用工具更容易。

我过去处理这个问题的方式是不从实时数据库复制数据。我找到了一些其他方法来创建用于测试的假数据子集。无论如何创建合成数据可能更好,因为这样您就不会冒在开发/测试环境中意外使用实时数据的风险,以防其中一些是私有(private)数据。

关于mysql转储: how to fetch dependent rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45967034/

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