Informatica数据加载机制 博客分类: ETL InformaticaUpdate数据加载机制ETLBI
程序员文章站
2024-03-13 23:57:04
...
很长一段时间,对informatica的数据加载方式,比较迷惑,只是大致知道怎么去使用,直到现在的工作环境中,看到有人在使用Update Strategy这个组件,目的只是为了能使数据得到更新(组件中,只是写这dd_update),个人认为Update Strategy这个组件在只是做一种加载方式时,大可不必去使用,因为这个是比较消耗资源的组件,它要根据数据自身特征,对数据进行rowtype进行处理,这个可以在debug的时候可以看到的。
那么后面session:Properties这个tab中有这个Attribute:Treat source rows as 也有几个选项可以对数据的rowtype进行置位。
最后在session:Mapping这个tab中对应的目标表有这个Attribute:它也有几个可复选选项Insert, Update as Update,update as Insert,Update else Insert,Delete可以再次进行设置它rowtype?注:Truncate target table option这个选项不在其中,它在数据同步时很有用(Update as Update,update as Insert,Update else Insert这个三个选项这能选择一个)。
这样,就有3个地方可以控制数据加载的类型,鉴于以上用Update Strategy处理方式(目标表有则更新,无则插入)我以前的做法一直是这样的,不用这个组件,session:Properties这个tab中有这个Attribute:Treat source rows as 选则Update,session:Mapping这个tab中对应的目标表有这个Attribute:选中Insert,Update else Insert同样可以达到想要的效果。
最近总会被同事问及到这个问题,其实我也有点迷糊,也找了些资料我曾在网上找了个文档写的蛮好的,也很能迷惑人(注:《Informatica Update 机制详解》)
总结下,是这样的:
1,在session:Properties这个tab中有这个Attribute:Treat source rows as有4个选项Insert,Update,Delete,Data Divern,其实这个地方才是最开始的数据加载方式,这里从Source表中出来的数据进行置位,也就是说在Mapping中SQ这个组件过后的数据rowtype就已经通过该地方被设置过了。
2,在Mapping中遇到Update Strategy时,这个组件会根据条件,对数据加以区分,有DD_UPDATE, DD_INSERT, DD_DELETE这样的几种rowtype,当然这个时候没有被选中的数据rowtype是不会被更改的,依旧是1中设置的状态(如有疑问可以用debug,查看)。
3,最后在session:Mapping这个tab中对应的目标表有这个Attribute,这个是控制目标的加载方式,其实有点类似,有对目标表Insert Update,Delete的权限一样,这里默认选中了Insert,Update as Update,Delete其实相当于给出了Insert Update,Delete这个三个权限。Update as Update 就是以更新的方式更新,至于Update as Insert,是只对更新的数据记录以插入的方式放入目标表,Update else Insert这个是有数据需要更新的进行更新,对新数据(主键记录条数)进行插入,当然这个时候如果有新的数据Insert这个选项一定也是要选中的,否则新数据会被拒绝掉。(其实这就相当于你想往表里面插入数据,但你对表没有插入权限)
注:在设计mapping 中如果已经用到Update Strategy这个组件了,那么后面的在session:Properties这个tab中有这个Attribute:Treat source rows as也就被定格在Data Divern这个选项了。
那么后面session:Properties这个tab中有这个Attribute:Treat source rows as 也有几个选项可以对数据的rowtype进行置位。
最后在session:Mapping这个tab中对应的目标表有这个Attribute:它也有几个可复选选项Insert, Update as Update,update as Insert,Update else Insert,Delete可以再次进行设置它rowtype?注:Truncate target table option这个选项不在其中,它在数据同步时很有用(Update as Update,update as Insert,Update else Insert这个三个选项这能选择一个)。
这样,就有3个地方可以控制数据加载的类型,鉴于以上用Update Strategy处理方式(目标表有则更新,无则插入)我以前的做法一直是这样的,不用这个组件,session:Properties这个tab中有这个Attribute:Treat source rows as 选则Update,session:Mapping这个tab中对应的目标表有这个Attribute:选中Insert,Update else Insert同样可以达到想要的效果。
最近总会被同事问及到这个问题,其实我也有点迷糊,也找了些资料我曾在网上找了个文档写的蛮好的,也很能迷惑人(注:《Informatica Update 机制详解》)
总结下,是这样的:
1,在session:Properties这个tab中有这个Attribute:Treat source rows as有4个选项Insert,Update,Delete,Data Divern,其实这个地方才是最开始的数据加载方式,这里从Source表中出来的数据进行置位,也就是说在Mapping中SQ这个组件过后的数据rowtype就已经通过该地方被设置过了。
2,在Mapping中遇到Update Strategy时,这个组件会根据条件,对数据加以区分,有DD_UPDATE, DD_INSERT, DD_DELETE这样的几种rowtype,当然这个时候没有被选中的数据rowtype是不会被更改的,依旧是1中设置的状态(如有疑问可以用debug,查看)。
3,最后在session:Mapping这个tab中对应的目标表有这个Attribute,这个是控制目标的加载方式,其实有点类似,有对目标表Insert Update,Delete的权限一样,这里默认选中了Insert,Update as Update,Delete其实相当于给出了Insert Update,Delete这个三个权限。Update as Update 就是以更新的方式更新,至于Update as Insert,是只对更新的数据记录以插入的方式放入目标表,Update else Insert这个是有数据需要更新的进行更新,对新数据(主键记录条数)进行插入,当然这个时候如果有新的数据Insert这个选项一定也是要选中的,否则新数据会被拒绝掉。(其实这就相当于你想往表里面插入数据,但你对表没有插入权限)
注:在设计mapping 中如果已经用到Update Strategy这个组件了,那么后面的在session:Properties这个tab中有这个Attribute:Treat source rows as也就被定格在Data Divern这个选项了。