2013-01-08 55 views
0

我有兩個表,一個是新數據,另一個是舊數據。Diffing and Synchronizing 2 tables MySQL

我需要找到兩個表之間的diff,並且只會將生成中的舊數據推送到表中。

這兩個表在列方面是相同的,只是數據不同。

編輯: 我正在尋找方法只有一個同步

EDIT 2 表中可能有外鍵。

這裏有

  • 我不能使用shell實用程序一樣mk-table-sync
  • 我不能使用GUI工具,因爲它們無法實現自動化,如建議here的約束。
  • 這需要以編程方式或在數據庫中完成。
  • 我在Google App-engine上工作python

目前,我做這樣的事情

  • OUTER JOIN S和WHERE [NOT] EXISTS每個紀錄SQL查詢比較和推動的結果。

我的問題是

  • 有沒有更好的方式來做到這一點?
  • 在python中而不是在db中做這個更好嗎?
+0

假設您只需要單向同步:爲什麼不直接完全擦除舊錶並填充新表中的所有數據?數據太多? –

+0

是的,我只想要一種方式同步。 正如我之前所說,它將在生產中,我不能放棄表並取代它,是的它可能有成千上萬的行 – Gautam

回答

0

根據我的問題你的評論,你可以簡單地做:

DELETE FROM OldTable; 

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

正如我上面所指出的,有可能是理由不這樣做,例如,數據的大小。

+1

這是一個不錯的想法,在一個生產數據庫上有成千上萬的記錄,特別是考慮到它可能有外鍵。 – Gautam

+0

O.k.您對我的問題的原始回覆沒有說明這一點。因此我的解決方案是不可能的。 –

+0

感謝您指出我的問題中的循環孔 – Gautam