Kettle合并记录 问题解决

Kettle 实现增量同步的一个关键,出现了异常,已经解决


问题:获取到同步源和同步目标数据后,对比两者差异,用到了“合并记录”模块,通过简单的设置,包括--新旧数据源、标志字段、关键字段、数据字段,即可获得数据差异,其中包括deleted、new、changed、identical,看似已经获取所有想要的数据。

Kettle合并记录 问题解决_第1张图片

但是根据标志字段进行下面同步操作时,(大数据量时,1-10万)数据总是不对。

发现:新旧数据源都有的修改数据,有可能被“合并记录”模块标记成 
A new
A deleted
这样,当操作db后,可能是先insert A,后delete A,结果表中就少了A。

解决:根据发现的内容,有两种方案
1.在操作db时,控制顺序,先delete,后insert,这样数据不会少
2.我猜测,一个修改的数据可能在判断是新增、修改、删除时,在旧数据源没有最快找到记录,就标记成new,后面在旧数据源找到一条数据,在新数据源中(已经过去的数据不考虑)没有找到,就标记成deleted
所以解决方法很简单,将新旧数据源都排序,这样得到了我想要的结果。

你可能感兴趣的:(Kettle合并记录 问题解决)