Kettle学习(4):Kettle取差集数据类似oracle的minus

本文介绍了如何使用Kettle工具解决数据同步问题,特别是面对A库物理删除的情况。文中提出了两种解决方案:1. 替换插入/更新控件为表输出并全量更新,但考虑到数据量和业务连续性,这种方法存在风险。2. 利用MultiwayMergeJoin和Filter步骤实现数据差集过滤,通过调整输入流顺序获取不同数据,模拟Oracle的MINUS操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景
工作中遇到的一个问题,场景是这样的,我们需要从A数据库通过一定的逻辑转换到B数据库,原来同事做的方式是使用了Kettle里面的一个控件,插入/更新这个控件,但是,程序上线一段时间后发现一个问题,A库的删除是物理删除,物理删除这个是万万没有想到的啊,你要是逻辑删除,那么每次我们在取数的sql里面加一个flg来判断就好了啊,只取是有效的就可以了,但是,这特么物理删除就直接懵比了,我们这个控件是不支持对删除数据的感应的啊,所以大致的问题背景就是这样的。

解决问题方式

  1. 第一点让我想到的就是,那就把插入更新的插件替换成表输出就可以了啊,然后配置里面改成裁剪表这样每次我们就是全量的更新这个表的数据了啊,管你什么更新删除,每次我都是最新的数据啊,但是想法往往就很好,实际就有问题,十来万条数据,你这么批量的删了,然后在插入,这段时间业务数据是一直在跑的啊,而且这么做的话,会出现生产问题
  2. 第二点,我就想到了Oracle里面的merge into的语法,要有这个就好了,但是Kettle是没有啊,所以就要想怎么实现呢,发现一个控件,MultiwayMergeJoin这个控件可以实现过滤不一样的数据,例如我建立了两张表,test和test1表存的数据如下图所示

test表

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值