kettle利用时间戳(timestamp)做增量抽取

创建两个表:

用户为Scott

create table zhiyuanb(填表日期 Date primary Key,

       姓名  Varchar2(10) Not Null,
         
年龄  Number(3) ,
          居住地 Varchar2(100),

)

用户为hr

create table ruzhib_1 ( 填表日期 Date primary Key,

       姓名   Varchar2(10)Not Null,
     
年龄  Number(3) ,
      居住地 Varchar2(100),
)

把Scott用户下的ruzhib 的增量数据抽取到hr用户下面的ruzhib_1

首先先创建一个时间戳表:

create table times(

                           cqsj  date  primary Key,    --最近一次抽取表的时间

                           xtsj  date );                   --上次抽取作业的时间

 

ruzhib数据为

 

 

开始了,进入主题:

第一步先获取时间戳表里面的上次抽取的时间这里用的max(),再将上一步获取到的时间来取出上次抽取以后的数据,再将其插入到ruzhib_1里面

详细步骤:

查询的字段只需要弄一个主键就够了

 再把抽取的时间和抽取时的系统时间记录到时间戳表内

详细步骤:

Max(填表日期)就可以获到本次增量抽取过来的最近时间,sysdate,来获取本次的操作时间

再将其插入到times表里

 

 

通过作业把他们组合到一块


详细步骤:start用于开始,

在第二个控件转化里面


把刚才做的那个抽取的转换填进去

第三个是把时间添加到times表里的转换


最后完成


步骤就这些

咱们测试一下

出现了一个错误,为什么呢,因为这是第一次创建表使用,times表里面还没有数据,所以会出错,咱们先向里面手动添加一条数据

InsertInto times Values(to_date('2018/1/1 12:23:00','yyyy/mm/ddhh24:mi:ss'),

                          to_date('2018/4/16 12:15:23','yyyy/mm/ddhh24:mi:ss'))

 

 

然后咱们再试一下

 

成功了,再测试一下,往zhiyuanb里插上两条记录再试试

InsertInto zhiyuanb Values(to_date('2018/2/3 12:56:00','yyyy/mm/ddhh24:mi:ss'),'玛丽',20,'北京');

InsertInto zhiyuanb Values(to_date('2018/3/4 09:31:02','yyyy/mm/ddhh24:mi:ss'),'张吉',23,'河南');

又成功了,所需的数据都被插入了进来

 

时间也被插入更新了进来

 

 

 

 

O k

自己独立编写,喜欢的能帮助你的给个小赞赞吧!!!


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页