gpt4 book ai didi

mysql - 如何在不导致主键和外键冲突的情况下合并 2 个非空 mysql 数据库之间的数据

转载 作者:行者123 更新时间:2023-11-29 02:09:33 24 4
gpt4 key购买 nike

如果数据库结构相同,如何将数据从一个数据库迁移到另一个非 emoty 数据库而不会出现主键冲突。这就是我的意思:数据库 A 有 100 个表,每个表使用主键和外键与其他表互连。每个表都包含大量数据。

Data as B 中存储了同类数据,具有主键和外键关系。这两个数据库相同,但存储在其中的数据不同。我想合并这两个数据库而不会导致主键和外键冲突。

数据库是mysql。可能的解决方案是什么?

最佳答案

外键约束是保持数据一致性和完整性的一种手段。

当然,您可以只禁用约束检查并插入每个表的所有数据,但这会破坏一致性,因为您将拥有重复的键,并且无法跟踪引用。

假设在合并后保持这种完整性对您很重要,您需要找到一种方法使主键唯一,即对于 A 中的每个给定表,一组主键没有公共(public)元素来自 B 的相应表格。

如果您的主键是唯一字符串 (GUID),那可能不是问题。您可以尝试禁用约束,插入数据,然后再次启用约束。然后验证合并的行数 = rows_from_A + rows_from_B。

如果您有自动递增的整数主键,您可以尝试调整其中一个数据库,使键具有不同的范围,并且不会相互冲突。例如,如果数据库 A 中的所有键都小于 1000000,您可以创建一个新数据库 B2,它是 B 的副本,但您将 1000000 添加到每个主键。然后你可以合并 A 和 B2。

关于mysql - 如何在不导致主键和外键冲突的情况下合并 2 个非空 mysql 数据库之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56617689/

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