2016-11-24 81 views
0

我正在使用phpmyadmin,我必须合并具有相同结构但数据不同的两个数据库。如何合并具有相同结构但数据不同的两个数据库

db之间有表(外键)之间的关系。 两个数据库中的数据可能具有相同的ID,因此它们的外键。

我想知道是否有可能合并两个数据库保存所有数据,所以,如果一行已经“存在”,插入它与新的ID并更新其外键。

非常感谢

+0

认为没有方便的方法。你应该自己写一些东西,比较数据,在需要的地方应用更改,然后保存它。你应该从核心实体开始,并慢慢加入所有其他表。 – degr

+0

啊好的...我希望有一个简单的解决方案。无论如何感谢重播! –

回答

0

不容易的方式不幸。如果您将TableA作为TableB的外键,您需要:

1)将数据从源表A插入到目标表A 2)创建一个(临时)表来存储源表AID和目标表ID的映射 3)插入tableB中的数据时,使用此映射表将数据表ID转换为目标数据库中的新ID。

...等等。如果您拥有深层次的表格,它会变得非常毛茸茸,但希望您明白这一点。在开始之前进行备份。

+0

重复行如何? – degr

+0

做左键加入,只插入空 –

+0

你有结构ID,名称,街道。来自第一数据库的表A包含行1,Joe Blow,Green Park RD 10',来自第二数据库的表A包含'3,Joe Blow,Green Park road(10)'。他们有不同的身份证,不同的地址,但这是同一个人。在这种情况下你应该做什么? – degr

0

,你可能想使用游标来考虑的另一个想法:

  1. 假设表A是要保持和表B是要删除的一个之一。
  2. 声明表B的光标并选择所有记录。
  3. 循环从光标中选择的每条记录并进行检查。 案例1:如果表A中存在该ID,则将该记录插入到具有相同细节的表A中。情况2:如果表B上存在ID,则插入记录并修改ID和外键。
  4. 一旦所有的记录都被检查,删除表B.

对不起,我只是可以给目前的想法。

+0

将无法​​正常工作,信息100%.http://www.newsmo.ru/wp-content/uploads/2011/01/800px-Arnold_schwarzenegger_train-300x225.jpg – degr

+0

May I kmow为什么不起作用? –

+0

以前我在SQL服务器上使用过,没有问题,但我没有用过一段时间的mysql。 –

相关问题