0

我有 2 个相等的数据库(A 和 B),每个表在单独的离线机器上运行。

每天我都会导出他们的数据(以 csv 格式)并将其“合并”到第三个数据库 (C) 中。我先处理 A,然后处理 B(我将 A 的内容插入 C,然后将 B 的内容插入 C)

现在,我可能会得到重复的行。如果某些字段(例如“邮件”)已经存在,我会考虑重复。我不在乎其他字段是否相同。

如何将 A 和 B 插入 C 中,不包括那些重复的行?

提前致谢!

4

2 回答 2

1

最简单的解决方案应该是在有问题的列上创建一个唯一索引,并将第二个插入作为 INSERT IGNORE 运行

于 2012-12-07T13:20:38.490 回答
0

我个人使用 ON DUPLICATE KEY UPDATEas usingINSERT IGNORE会导致任何错误作为警告抛出

这可能会产生一些副作用,并可能导致您意想不到的行为。有关某些副作用的详细信息,请参阅这篇文章。

如果您最终使用该ON DUPLICATE KEY UPDATE语法,它还将提供一种更改逻辑的方法,以便在业务需求发生变化时使用新数据更新特定字段。

例如,您可以通过说 来计算重复记录插入的次数ON DUPLICATE KEY UPDATE quantity = quantity+1

上面引用的帖子有更多信息。

于 2012-12-07T15:12:18.747 回答