2011-08-17 44 views
0

假設:如何以編程方式比較2個表格?

  • 同樣的查詢是在兩個表跑
  • 兩個表都駐留在不同的模式
  • 數據庫表5的一部分,或者可能是不一樣的
  • 如果數據庫是不同樣,不能保證它們的版本或補丁級別
  • 數據的順序在兩個表中都是相同的。數據進行排序
  • 可能的是,一個表具有多個列,則其他
  • 可能的是,一個表具有多個行,則其他

我看到它有2個不同的challanges

  • 運行比較
  • 產生清晰的報告,概述了不同

不知下面的方法是有效的

If (table1 and table 2 have the same number of columns) 
    For every row found in table1 check 
    If that same identical row exists in table2 
     And if it does not due to some column mismatch 
      Find the closes match possible and report column differences 
      If best match can be discovered, report column difference, else 
       report can result is ambiguous 
        ... 

這是一個合理的做法?鑑於上面的一些假設,你能推薦一種替代方案嗎?

回答

2

我的答案是使用red-gate SqlCompare。 他們有一個模式和一個數據比較工具,這些工具還允許您生成腳本來使一個數據庫看起來像另一個數據庫。

我與其他然後作爲客戶

1

嗯,藉助像ORM這樣的ORM,你可以比較你的實體(表)像正常的Java對象(我假設你在這裏使用Java)。

這就是說,你可以寫一個比較,涵蓋所有的假設。

1

忽略的行的差異列數和號碼紅色柵極沒有連接,是應該表示相同的實體的數據?

如果是這樣,我開始大和工作,我的一路下滑:

  1. 找出哪些列均表所示。
  2. 查找或定義表格的關鍵字。
  3. 使用各種連接運行幾個SQL查詢來說哪些行在兩個表中,哪些行在哪些表中缺失,等等。