gpt4 book ai didi

mysql - 合并具有相同设计的两个数据库(Mysql)

转载 作者:行者123 更新时间:2023-11-29 04:27:22 24 4
gpt4 key购买 nike

我有两个设计相同的数据库,在Mysql中有不同的记录有两个具有唯一主键的主表。 (我的意思是,如果不同数据库中的两条记录具有相同的主键,则它们是相同的。)

这两个表与其他表之间存在多对多关系。但问题是小表PK在所有DB中都不是唯一的(自增)

现在我想合并这两个数据库的数据。

有什么想法吗?

最佳答案

编辑:我想我误读了您关于 key 在数据库中是唯一的声明。在这种情况下,如果它已经在目标数据库中,我不会从原始数据库中插入一行。然后您仍然可以使用相同的外键复制外键表。

所以基本上:

INSERT INTO MainTable (PK, field1, field2)
SELECT (PK, field1, field2)
FROM OldMainTable
WHERE PK NOT IN (SELECT PK FROM MainTable)

为了以防万一,将旧答案留在下面。

最好的办法是修改表以具有 OldPrimaryKey 字段。然后当你向目标数据库插入数据时,将原始PK存储在OldPrimaryKey字段中。然后,当您使用外键插入任何内容时,查找匹配 FK 直到 OldPrimaryKey 字段并更新外键以匹配。 (为了以防万一,创建外键的副本可能是个好主意!)

所以查询可能看起来像这样:

INSERT INTO MainTableTarget  (OldPrimaryKey, field1, field2...)
SELECT PrimaryKey as OldPrimaryKey, field1, field2...
FROM OldMainTable

INSERT INTO Table2Target ( OldTable2PK, MainTableForeignKey, fielda, fieldb...)
SELECT Table2PK as OldTable2PK,
(SELECT PK FROM MainTableTarget) as MainTableForeignKey, --This get the FK to point at the newly created database record
fielda,
fieldb
FROM OldTable2

这可能会很痛苦,但我认为这里没有任何不痛苦的选择...

哦,对不起,如果语法有点不对...我是一个 T-SQL 专家,所以不太了解 MySQL 的语法。不过希望你明白了...

关于mysql - 合并具有相同设计的两个数据库(Mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8841978/

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