kettel定时同步两个数据库下的数据

现有两个用户orcalA与orcalB,需求是B用户下的所有表数据与操作要同步到A表中对应的表中,比如B用户下的user表新增一条数据,A用户下的user表就需要同步新增数据,如果B更新、删除了数据,A用户下对应的表中需记录更新的数据以及删除的数据

先看整体流程:

思路是A用户下的user表与B用户下的user表的所有数据查出来,先根据主键排序,排完序之后合并,合并的时候kettle会自动比较那些是新增、更新、删除的数据,并且会生成一个字符串标志带入下一步,switch/case时就是根据kettle给的标志,把新增、更新、删除的数据对应的去处理,获取系统信息时因为需要记录当前数据变更的时间,最后去需要同步的库里变更数据。

 

第一步:源数据表(JX)与目标表(ETL)全查询

第二步:根据主键排序(两个排序没什么区别,这里就只放一个图)

第三步:合并两个表的数据(这里合并比较数据的时候需要注意,如果数据最后插入很多或者更新跟多的时候,可能是这里出现问题,仔细核查一下字段)

第四步:根据flagfiled不同的值,拿到不同的数据,送到不同的操作中,目标步骤就是下一步的操作

第五步:因为需要记录数据是新增、更新、删除那种状态,所以需要选择字段,把flagfiled获取到(更新、插入、删除都是获取同样的字段)

第六步:获取当前系统时间,记录下更新本条数据的时间(字段名称自定义)

第七步:更新数据(id相同时,更新所有字段,给p_flag赋上flagfield的值,给P_change_time赋上获取的系统时间,这里id是否更新Y/N似乎没什么区别,测试了几次好像没什么影响,一般也不会去改主键,主键修改了就会认定为新增)

---flag是目标库的标记数据动作的字段,changetime是目标库记录数据变更时间的字段

第八步:插入新增数据(与更新一样,flag与changetime赋值正确就行)

第九步:更新删除字段(记录表的删除只是改变flag字段,并不删除数据,所以只需要更新flag与changetime即可)

 

第十步:定时(这个ktr文件写好后保存在本地,然后新建一个job文件)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值