如何在 Informatica 的同一个映射中实现插入、更新和删除

How to Implement Insert , Update and Delete In the Same Mapping in Informatica

我们有一个要求,我们必须在 Informatica 中的相同映射下实现插入、更新和删除逻辑。 Source 和 target table 结构相同,没有区别。目标中没有主键,我们将 PERSON_KEY 定义为 Informatica 映射中的主键以更新记录,我目前正在查看目标 table 并比较记录和路由器转换,以下逻辑用于插入和更新。我也提供了Table结构供参考

注意:源和目标来自不同的数据库

插入:ISNULL(LKP_PERSON_KEY)
更新:IIF(PERSON_KEY=LKP_PERSON_KEY,TRUE,FALSE)

PERSON_KEY      NUMBER(7, 0) ,
SOURCE_CD       VARCHAR2(16 CHAR) ,
SOURCE_INSTANCE NUMBER(2, 0) ,
TYPE_CD         VARCHAR2(32 BYTE) ,
TYPE_INSTANCE   NUMBER(2, 0) ,
VALUE           VARCHAR2(255 CHAR) ,
VALUE_TEXT      VARCHAR2(255 CHAR) ,
UPDATE_SOURCE   VARCHAR2(32 CHAR) ,
UPDATE_ACCOUNT  VARCHAR2(32 CHAR) ,
UPDATE_DATETIME DATE ,
UPDATE_SUNETID  VARCHAR2(64 CHAR) ,
UPDATE_COMMENT  VARCHAR2(255 CHAR)

使用update strategy.

确保 PERSON_KEY 在目标设计器中定义为 PK。
然后在映射中,就在目标之前,添加表达式转换。拉入所有数据列和 PERSON_KEY,LKP_PERSON_KEY 列。创建具有以下逻辑的列。我假设,如果满足上述条件none,则删除数据。

out_insert_update_flag = 
IIF(ISNULL(LKP_PERSON_KEY), 'INSERT',IIF(PERSON_KEY=LKP_PERSON_KEY,'UPDATE','DELETE')
)

然后添加表达式转换和目标之间的更新策略。拉入所有必需的列和 out_insert_update_flag。并创建这样的逻辑-

IIF(out_insert_update_flag ='INSERT', DD_INSERT, IIF(out_insert_update_flag='UPDATE', DD_UPDATE, DD_DELETE
)) 

然后将所有需要的列添加到目标。

在会话中 - 请将加载策略设置为 data driven

映射应类似于 -

.... --> EXP-->UPD-->TGT