2013-12-16 15 views
0

作爲我工作流程的一部分,我工作時我們在表(Oracle DB)之間執行大量壓縮 。 我們從給定服務器(列表中的第一個)將數據解析爲數據庫表,並將此表與實際表(生成信息所在的表)進行比較。自動化方法來提高數據庫標籤的價值和氣密性

我們希望看到通過服務器傳遞的值沒有改變或改變了我們想要改變的方式。我們還比較了行數和行數來檢查密封性。

所以我的問題是有辦法做到這一點自動? 我們做的是寫有大量的查詢和手動運行它們,檢查沒有數據 查詢。(我們做表減去其他表或搜索不等的值。)

但是這需要花費大量的時間每次我們這樣做(我們都會做很多),所以我們最終會在這裏浪費我們所有的時間。

所以神框架,或應用程序,我們可以有進入我們的查詢,並有智能斷言拖表進行比較?(或者,如果你有其他的想法是我的客人)

+0

有很多數據庫之間交換數據的框架。問題是,你願意爲他們付錢嗎?或者你只是在尋找免費軟件解決方案? – APC

+0

我更喜歡免費的解決方案,但也可以考慮成本金錢解決方案 – user3106313

回答

0

我不知道,如果有一個框架,但...

減號有時可能是一個非常緩慢的操作。嘗試使用不存在(或者甚至通過外連接做到這一點,它可以是一個有點快於不存在),例如: -

select * 
from myTableParsed mp 
where not exists (select null 
        from myTableReal mr 
        where mr.tablePrimaryKey = mp.tablePrimaryKey); 

這將返回其尚未在現實​​表中的行。要檢查其他方式,只需在此查詢中使用另一個表的順序。

要檢查是否有改動行:

select mp.* 
from myTableParsed mp, 
    myTableReal 
where mr.tablePrimaryKey = mp.tablePrimaryKey 
    and (mp.column1 != mr.column1 
     or mp.column1 is null and mr.column1 is not null 
     or mp.column1 is not null and mr.column1 is null 
     or mp.column2 ...); 

是的,查詢可以很很長,但它是非常快的爲好。此外,可以輕鬆生成此查詢(例如,使用user_tab_columns獲取列列表並生成查詢)。

我總是這樣做來檢查真實數據和更新真實數據的某些來源的差異。

好了,現在概述:

  1. 試圖改變 「負」 外連接
  2. 生成查詢自動

有了這些,也許,你不需要任何框架/工具要做到這一點

+0

_「減號是一個非常緩慢的操作」_,真的嗎?在整個桌子上?你有證據嗎?有一天,我用了MINUS在14m排桌子和21m排桌子的幾列上做了這個,花了幾秒鐘。 – Ben

+0

_很少的列可以表示不同的東西:3或30或300?我有一張有1.5米獨特的行和63列的桌子;它運行55秒來運行'select * from myTable minus select * from myTable'。減數類運算符速度較慢,因爲它們執行基於不同比較的比較,並且有更多列 - 速度較慢。答案是:_really_。 – smnbbrv

+0

是的,這是不精確的,不像_「減號是一個非常緩慢的操作」_。在某些情況下,我可能會慢很多,但在其他情況下這是錯誤的。或者,你有沒有證據? – Ben