2015-11-03 17 views
1

副本我尋找跨越2個表,其中表A(在用戶源數據庫 - DB2)驗證數據是表B的副本(在數據倉庫中 - DB2/Netezza)。SQL用於驗證/跨兩個表覈對數據,當每個是另一

由於數據複製過程不穩定,並且每天運行而不是實時運行,因此目標數據庫中存在差異,我需要找出並找出差異。另外,不要在服務器上施加很大的負載,這可能會破壞組織的正常運行。

我做了以下目前:

a) SUM checks on all numeric fields 
b) MAX/MIN checks 
c) Row Count checks (COUNT(*)) 
d) Checking the Data Types on both the DB's to be equal 
e) Checking the DISTINCT count of the PRIMARY fields 
f) Check MAX of Date on which the row was copied over (we put a new column to specify when that row was copied over) 
從上面

除此之外,有沒有一個單一的SQL查詢,這不會對數據庫服務器使用了過多的資源,這樣做的任何其他更簡單的方法?

此外,沒有任何人知道的方式來匹配行DB2的DB2和DB2,Netezza公司表排,就像一個可以與SAS表嗎?

注:

a) Netezza does not have the concept of UNIQUE or PRIMARY, so Referential Integrity and UNIQUE checking is not valid. 
b) All the tables have > 100M rows, so running a simple RowCount on each table can sometimes take upto 30-45 mins 

回答

0

我想知道你是否有在你的數據的字段或兩個,將讓您識別它作爲增量數據或差分數據,如果你不這樣做,那麼你可能需要審查該數據模型。另外,我一定會首先關注基礎設施,並使數據複製過程穩定可靠。另一方面,很難想象爲什麼要在其他地方的數據倉庫中實施數據副本,應該使用數據倉庫報告工具來查詢數據以用於分析目的,而且通常在至少一天。所以沒有什麼實時的。

你正在尋找可能的查詢存在,但你> 100M行和45分鐘RowCounts描述系統,也許,只是也許它可能需要永遠和一天。

底線是,你可能會尋找在錯誤的方向上的所有應有的尊重。

+0

問題是,我們取來自不同數據庫的數據(甲骨文中,Sybase,DB2,MS SQL,MySQL的),到數據倉庫中。我希望確保出現的數據(我們使用不同的腳本/工具來獲取數據)與上一天上傳到基礎源表的數據相同。如果不是,我希望找到丟失數據的三角洲。使用這種大型數據集對2張桌子做MINUS並不總是可行的。 – gagneet

+1

此外,我看明白了,如果方法我上面(SUM,MIN,MAX,記錄的HASH等)都不錯的方法描述檢查數據差異或者是有一些簡單的方法來做到這一點?其中,我可以逐行比較每條記錄,而不是對我們所擁有的數據進行彙總。 – gagneet

相關問題