如何在 Informatica 中的同一映射中实现插入、更新和删除
我们有一个要求,必须在 Informatica 中的相同映射下实现插入、更新和删除逻辑。源表和目标表结构相同,没有区别。目标中没有主键,我们将 PERSON_KEY 定义为 Informatica 映射中的主键来更新记录,我当前正在使用目标表的查看并比较记录,并且在路由器转换中,使用以下逻辑用于插入和更新。我还提供了表结构供参考。
注意:源和目标来自不同的数据库
INSERT : 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)
We have a requirement where we have to Implement Insert, Update and delete Logic under the Same Mapping In Informatica. The Source and target table structures are the same and there is no difference. There is no primary key in the target and we are Defining PERSON_KEY as the primary key in the Informatica mapping to update records, I am currently using a look upon the target table and comparing the records and in the router transformation, The Following logic is used for insert and Updates. I have also provided the Table structure for reference.
NOTE: The Source and target are from Different Database
INSERT : ISNULL(LKP_PERSON_KEY)
UPDATE : 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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
更新策略
。确保 PERSON_KEY 在目标设计器中定义为 PK。
然后在映射中的目标之前添加表达式转换。拉入所有数据列和 PERSON_KEY、LKP_PERSON_KEY 列。使用以下逻辑创建一个列。我假设,如果以上条件都不满足,则删除数据。
然后添加表达式转换和目标之间的更新策略。拉入所有必需的列和 out_insert_update_flag。并创建这样的逻辑 -
然后将所有必需的列添加到目标。
在会话中 - 请将加载策略设置为
数据驱动
。映射应该看起来像 -
use
update strategy
.Make sure PERSON_KEY is defined as PK in target designer.
Then in the mapping, right before target, add expression transformation. Pull in all data columns and PERSON_KEY,LKP_PERSON_KEY columns. Create a column with below logic. I assumed, if none of above condition met, delete the data.
Then add the update strategy between expression transformation and target. Pull in all required columns and out_insert_update_flag. And create a logic like this-
Then add all required columns to target.
In session - pls set load strategy to
data driven
.Mapping should look like -