2016-07-23 52 views
0

如果爲更新查詢發送已存在的記錄(如更新表組件),會發生什麼情況?它沒有被使用嗎?傳遞現有記錄以再次更新在更新表組件中Abinitio

我有一個abinitio輸出文件,其中有要更新的記錄(未插入)。我只需要收集那些實際更新的記錄。那麼我們如何才能將與以前完全相同的記錄(在DB中未更新)與哪些記錄至少更新一次?

+0

爲什麼用數據庫和Ab Initio標記?工作在哪裏? –

+0

我在更新表組件(abinitio)中使用更新/插入查詢來加載數據庫dB2。你能回答我的問題嗎? –

回答

0

我的第一種方法與Alex建議的方法相同,但它看起來像加入所有領域的數據庫作爲關鍵將需要更多的時間和資源。更好的方法是比較每個字段的重新格式化選擇參數或「按表達式」更新的現有值和新值。這隻會給出實際更新的記錄。 另外Michael是對的,DB2將更新,而不管它是否是實際更新。所以,未使用的端口不會給出沒有更新的記錄。

1

這是一個ETL問題,因爲無論該行是否發生更改,DB2都會進行更新。我不詳細地瞭解Ab Initio,但是您必須在DB2 Update之前進行變更檢測。 通常,ETL工具具有某種「更改捕獲」/「比較」/「差異」功能來檢測更改。

+0

您能否請您將其標記爲答案 - 謝謝 – MichaelTiefenbacher

0

您可以嘗試使用更新表組件中的未使用端口進行操作,也可以查看ActionRequired標誌。

一個簡單的方法來確定更新是否會發生,或者更好的只是在更新中只提供更新,是從數據庫中加入數據(select語句將選擇每個將被更新文件更新的記錄),並將其與記錄中所有字段上的數據庫一起作爲關鍵字加入。與更新文件有關的未使用端口上出現的那些記錄是執行更新操作的那些記錄。