2011-12-09 41 views
1

我有兩個相同的(在結構上)數據庫駐留在單獨的後端服務器上。通過Perl合併兩個MySql數據庫(不是表)

我需要想出一些邏輯來將他們的數據合併到第三個服務器上的單個數據庫中。我最初的設計是使用Perl哈希和數組的組合將它們的數據(通過表)加載到內存中,然後將它們合併到那裏,然後對本地數據庫(結構也是相同的)進行單個大量寫入。

我會重複所有表(4-5)。

我見過關於合併表的文章,但不確定是否可以使用其中一些響應,因爲我的表駐留在單獨的數據庫中(更不用說單獨的計算機)。

我的問題是我堅持不得不將結果加載到內存中,或者是否有我可以使用的MySQL功能?

+0

這裏「合併」是什麼意思?數據庫在某些領域是否重疊?如果它們重疊會發生什麼?多少個表互相引用?你(或者你會)有外鍵嗎? –

+0

讓我試着迴應。通過合併,我的意思是我想要一個單一數據庫的最終產品,如果我查詢兩個單獨的數據庫,它會給我結果。有3個表和一個引用另一個引用最後一個。某些表具有自動遞增的主鍵,因此它們肯定可以與其他數據庫重疊並且很容易不會相同(即,ID35可以在兩個數據庫中引用兩個不同的東西)。至於外鍵,它們不到位。 – sirmarlo

+0

添加FKs。轉儲較大的數據庫,恢復到目標,在恢復的數據庫中查找最大自動增量值,返回到較小的數據庫,增加所有ID以超過這些最大值,轉儲/裝載...利潤。但是這不再是一個編程問題。 –

回答

1

什麼「畝」說需要解決,但我不確定我會採用這種方法。

  1. 獲取兩個數據庫上使用標準的MySQL轉儲目標服務器/恢復
  2. 使用標準的查詢中使用的標準將它們合併到第三DB查詢

你應該讓MySQL的做繁重。

+0

我回答了上面的mu的問題。我還應該補充說,這些表格有一個與它們相關的日期字段,我需要從它們中拉出特定的記錄進行合併。例如,我需要從兩個數據庫的1/1/11-> 1/7/11中提取記錄,並將它們合併到一個數據庫中。我不相信你可以使用mysql轉儲來指定日期範圍。 – sirmarlo

+0

你爲什麼要使用mysqldump?只需在相同的安裝和查詢數據庫上獲取數據庫。 –