ETL数据更新
来源:互联网 发布:securecrt端口转发 编辑:程序博客网 时间:2024/05/17 07:59
很长一段时间,对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这个选项了。
- ETL数据更新
- ETL(数据抽取)[转]
- ETL(数据抽取)
- ETL数据加载策略
- ETL数据抽取策略
- ETL---数据清洗转化
- ORACLE ETL数据抽取
- ETL数据抽取
- 数据挖掘之------ETL
- Spark 数据ETL
- Spark 数据ETL
- 一个实现数据增量加载的ETL算法(记录新增、更新和删除标志)
- 提高ETL数据加载效率
- 2、ETL抽取数据子系统
- 互联网数据ETL-实用攻略
- ETL数据测试方法小结
- 择善而从ETL还是数据联合?
- 大数据核心技术ETL简介
- Delete和Truncate的区别
- Java编程中“为了性能”需做的26件事
- Microsoft Windows Server 2003 R2 分布式文件系统解决方案概述
- 线程的yield(),sleep()以及wait()的区别
- C++操作XML之二---RapidXml
- ETL数据更新
- WM Workstation 8创建SQL Server 2012 集群(cluster) Part2
- xcode4.3 下使用模拟器跑内存检测
- Linux下Kill的用法
- jquery 插件 thickbox窗口 第一个控件获得焦点(解决第二次弹出窗口,文本不能输入数据)
- java 关联中的 组合与聚合
- TreeList的GetStateImage事件应用
- 在CakePHP中利用Javascript Helper把PHP数组转换为JSON
- 关于线程