如何使用ODI procedure-12C删除数据

时间:2017-10-05 04:33:35

标签: procedure

我是ODI的新手,在尝试使用过程删除数据时面临不同的问题。

我遵循的步骤:

  • 创建一个过程,在source命令中我们保持选择查询。 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

注意:源表和目标表数据是销售。它不应该删除任何数据。

1 个答案:

答案 0 :(得分: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)