首页 > 其他 > 详细

ETL工具kettle怎么进行增量数据抽取:一、通过标志位

时间:2018-08-24 00:25:12      阅读:242      评论:0      收藏:0      [点我收藏+]
在平时的操作过程中可能大家需要经常进行增量的数据抽取,方法有很多种,接下来几天讲给大家介绍几种我本人经常使用的几种方式;
首先给大家介绍我最喜欢的一种,就是通过标志位;
操纵方法如下,在源表中增加一个标识字段,比如tongbu,当然可以为它设个默认值N,然后我们再增加一个索引nvl(tongbu,‘N’),增加索引是为了提高查询的速度,接下来我们来写具体的流程;
技术分享图片
我写的这个流程非常简单,有的朋友们会非常疑惑为什么我会有更新组件,先卖个关子咱们继续;
在写 表输入中的sql时,我们引入了一个伪列gx,并赋值Y,这有什么有呢,继续看;
技术分享图片
大家可以看到我在表输入的sql中特意框起来两块,where条件后面的就用到了我们之前建的索引,这个语句的逻辑解释为当tongbu这个字段的值为空或者为N的时候我们认为这些数据是未同步到目标表的;
当原表中的数据同步到目标表之后我们回头将伪列gx的值(Y)赋给这条数据的标志位tongbu,那么这时tongbu的值就变成了Y,此时我们就认为这条数据已经同步到目标标了,在下一个执行计划中就不会继续同步它;如图
技术分享图片

这种方法的好处是非常直观,你可以通过标志位可以很清楚的知道这条数据有没有同步,特别是需要频繁同步的时候;
当然缺点也是很明显的,会对原表造成一定的压力,并且速度可能会收到一定的影响;

如果有什么迷糊,可以给我留言(这种方法理解起来稍微有一点点压力);
其实一句话:根据状态为确定有没有同步,没同步的同步后修改状态位;

ETL工具kettle怎么进行增量数据抽取:一、通过标志位

原文:http://blog.51cto.com/13602563/2163559

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!