這兩個數據庫具有相同的模式,但數據不同。可能會有一些行重複,但足以讓合併保持喧鬧,如果找到重複項,則不進行更新,即應手動解決重複項。將兩個不同的Postgresql數據庫合併到單個數據庫
問題的一部分是有問題的數據庫中存在一些外鍵約束。另外,可能有一些引用實際上沒有外鍵約束的外鍵的列。後者是由於插入時的性能問題。另外,我們需要能夠在舊數據庫的ID和新數據庫中的ID之間進行映射。
顯然,我們可以寫一堆代碼來處理這個問題,但我們正在尋找一個解決方案是:
- 較少的工作
- 開銷少的機器上執行合併。
- 更可靠。如果我們必須編寫代碼,它將需要通過測試等,並且不能保證無缺陷
很明顯,我們仍在搜索Web和Postgresql文檔的答案,迄今爲止發現的一直沒有幫助。
更新:我明確忽略的一件事是「重複」由模式中的唯一約束明確定義。我們希望恢復一個數據庫的內容,然後恢復一秒鐘的內容。第二次恢復期間的錯誤應該被認爲對第二次恢復是致命的。然後應該從第二個數據庫中刪除重複項並創建一個新的轉儲。我們希望ID被重新編號,但不是其他唯一的約束。順便說一下,可能會有第三個甚至第四個數據庫在第二個之後合併。
更新級聯將有助於解決我們的問題。這是不夠的(正如你指出的那樣),但有幫助。 ID溢出不應該是一個問題,因爲我們的ID都是bigint。 – aikimcr