【问题标题】:Diffing and Synchronizing 2 tables MySQL区分和同步 2 个表 MySQL
【发布时间】:2013-01-08 07:31:28
【问题描述】:

我有 2 个表,一个包含新数据,另一个包含旧数据。

我需要在两个表之间找到diff,并且只将更改推送到包含旧数据的表中,因为它将在生产中。

两个表的列相同,只是数据不同。

编辑: 我只在寻找一种同步方式

编辑 2 该表可能有外键。

这里是限制

  • 我不能使用像mk-table-sync这样的shell实用程序
  • 我不能使用 gui 工具,因为它们不能像建议的 here 那样自动化。
  • 这需要以编程方式或在数据库中完成。
  • 我在 Google App-engine 的 python 工作。

目前我正在做类似的事情

  • OUTER JOINs 和 WHERE [NOT] EXISTS 比较 SQL 查询中的每条记录并推送结果。

我的问题是

  • 有更好的方法吗?
  • 在 python 中而不是在 db 中执行此操作是否更好?

【问题讨论】:

  • 假设您只需要单向同步:为什么不完全擦除旧表并从新表中填充所有数据?数据太多?
  • 是的,我只想要一种方式同步。正如我之前所说,因为它将投入生产,我不能只是删除表并替换它,是的,它可能有数千行

标签: python mysql google-app-engine diff


【解决方案1】:

根据您对我的问题的评论,您可以这样做:

DELETE FROM OldTable;

INSERT INTO OldTable (field1, field2, ...) SELECT * FROM NewTable;

正如我上面指出的,可能有不这样做的原因,例如数据大小。

【讨论】:

  • 这对于拥有数千条记录的生产数据库来说是个坏主意,尤其是考虑到它可能有外键。
  • 好的。您对我的问题的原始答复没有说明这一点。因此我的解决方案是不可能的。
猜你喜欢
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多