2012-06-26 61 views
0

我需要比較來自兩個數據庫(它們都是DB2)的數據,這些數據庫位於不同服務器上,而且它們之間沒有現有連接。因爲這兩個數據庫都在生產中使用,所以我不想重載它們,因此我將在本地機器上創建一個新的數據庫(可能是MySQL),從兩個DB2中提取數據,插入到MySQL中並在本地執行比較。如何在數據庫之間移動大量數據?

我想在Java中這樣做,所以我的問題是如何儘可能有效地完成這項任務,而不會超載生產數據庫。我做了一些研究,並與下面弄出點:

  • 限制,我將在我最初的SELECT語句中使用
  • 調列數的獲取ResultSet對象的大小(默認爲IBM DB2 JCC驅動程序似乎是64)
  • 利用PreparedStatement對象的預編譯SQL

還有什麼我可以做,或其他任何建議嗎?

謝謝

+1

在生產燈使用期間安排數據庫副本。 –

+0

您的目標是確定兩個數據庫(或表)之間的行級別差異嗎?另外,運行的生產系統是什麼樣的操作系統? – NealB

+0

@GilbertLeBlanc @GilbertLeBlanc應該已經添加到列表中,肯定不會在高峯使用時間內完成它,謝謝 – soulfly1983

回答

2

DB2 for Linux UNIX和Windows將EXPORT實用程序作爲其運行時客戶端的一部分。可以將此實用程序指向z/OS上的DB2數據庫,以便快速將表(或查詢結果集)抽取到客戶機上的平面文件中。您可以選擇flatfile是以分隔符,固定寬度還是DB2專有的IXF格式。您的z/OS DBA應該能夠幫助您在工作站上配置客戶端,並根據EXPORT實用程序的要求將必要的軟件包綁定到z/OS數據庫中。

一旦你的客戶端上有平面文件,你可以根據自己的喜好來比較它們。

+0

@ user1482510這幾乎是我要採取的方法。將表格轉儲爲平面文件,然後使用您可用的任何文件差異工具。你應該可以使用canned db/2和OS實用程序完成整個工作。 – NealB

0

聽起來像是一個很好的地圖縮小工作(hadoop)。一個工作有兩個mapper,每個DB和一個reducer做一個比較。它可以根據需要擴展到儘可能多的處理器,或者只運行在一臺機器上。

+0

感謝您的建議,不知道Hadoop項目,這看起來很有趣,但在這種情況下也許會是一種矯枉過正?不知道,但從描述它的情況,當你想做大量的數據計算廣泛的分析..在我的情況下,我只是想移動大量的數據,然後將被逐行比較,所以不是這樣的一個昂貴的操作 – soulfly1983

+0

,因爲你打算使用一臺機器,我不認爲Hadoop會是一個理想的選擇。正如你所說的那樣,它適用於處理大型數據集,跨多臺機器的集羣。 – Tariq

相關問題