如何在MySql中合并两个数据库

时间:2011-09-16 17:00:30

标签: mysql database merge schema phpmyadmin

我需要合并两个MySql数据库。

  • DBtwo是DBone的副本。
  • 我将数据添加到DBone中的table_x,并将数据添加到DBtwo中的table_y。
  • 我需要在DBOne中保留数据,同时合并所有其他编辑 - 例如在DBTwo中删除的条目。
  • 模式是相同的,而每个数据库都有不同表中的不同数据。

谢谢大家的帮助。

编辑: 我忘记了。我向table_x添加了列,这些列是table_y的外键。所以DBone有一些插入的条目没有我添加到DBtwo中的table_x的列。 :/

2 个答案:

答案 0 :(得分:0)

您可以使用触发器。有关您的实现,触发器,函数和过程,请参阅MySQL文档。

答案 1 :(得分:0)

合并前是否有原始数据库的副本?如果没有,你问的是不可能的。这是问题所在:

原始数据库包含以下记录:

{a, b, c}

在table_x中,你添加一个d,所以现在你有:

{a, b, c, d}

在表y中,您删除了一个b,因此您拥有:

{a, c}

您现在尝试合并这两个数据集:

{a, b, c, d}
{a, c}

如果不参考原文,你怎么知道b和d是否应该在新的集合中。如果它们不是原始的并且你从叉子开始添加它们,它们应该被包括在内。如果它们是原始文件,并且自合并以来在table_y中删除了它们,则不应包括它们。

假设您有访问权限,则需要执行以下操作:

insert into table_y
select *
from table_x x
where x.id not in (select id from table_x_original)

然后将table_y重命名为table_x(如果您希望table_x成为新数据源)。如果您的ID已生成且可能存在冲突,则您需要将*替换为除id列以外的所有列的列表,以生成新的序列ID。