在用kettle进行数据同步时,发现一个问题:目的数据库的数据少于源数据库的数据,丢失的数据去哪里了呢?
先上图:
步骤1:从源数据库抽取数据
步骤2:删除目的数据库的数据
步骤3:插入到目的数据库
但是问题来了,这么简单的一个过程,到底是哪里出了问题呢?
首先,我们需要了解kettle的运行过程,如上图,步骤1,2,3虽然是按照顺序执行的,但是是并行的!也就是说步骤1,2,3都是一条条数据执行的。
可以想象,步骤1不断地在抽取数据,步骤2不断地删除数据,步骤3不断地插入数据,目的数据库最后数据的多少就看各自的运行速度了。
那么怎么解决呢?
首先,把数据删除的执行脚本放在最前面,与并行的步骤分离
然后,把红圈中的勾去掉,数据删除不再一条条执行
最后执行一下,数据缺失问题也解决啦!