2017-10-05 55 views
0

我是ODI的新成員,在嘗試使用過程刪除數據時面臨不同的問題。如何使用ODI程序刪除數據-12C

我的步驟如下:

  • 創建其中源命令,我們保持選擇查詢的過程。 SELECT DOC_ID FROM SOURCE_TAB
  • 在目標命令中,我們保留刪除查詢,它假設只刪除來自TARGET_TAB的不匹配數據。 DELETE FROM TARGET_TAB WHERE TRAN_ID NOT IN (:DOC_ID)
  • 但是我們擔心的是,程序執行成功並刪除源表和目標表數據相同的目標表中的所有數據。

源表:SOURCE_TAB

DOC_ID NUMBER(10); 
==== 
10 
20 
30 
40 
50 

目標表:TARGET_TAB

TRAN_ID NUMBER(10); 
==== 
10 
20 
30 
40 
50 

注:源和目標表中的數據是銷售。它不應該刪除任何數據。

回答

0

對於此方法,ODI使用逐行方法。爲了從源頭上每DOC_ID它的目標

DELETE FROM TARGET_TAB WHERE TRAN_ID NOT IN (10) 
DELETE FROM TARGET_TAB WHERE TRAN_ID NOT IN (20) 

執行命令.....

因此,刪除所有數據

如果源和目標表都在同一個數據庫,使用單查詢刪除數據。

DELETE FROM TARGET_TAB WHERE TRAN_ID NOT IN (SELECT DOC_ID FROM SOURCE_TAB) 
+0

源和目標DB在這種情況下是不同的。 – RONI