先上图:

步骤1:从源数据库抽取数据

步骤2:删除目的数据库的数据

步骤3:插入到目的数据库

但是问题来了,这么简单的一个过程,到底是哪里出了问题呢?

首先,我们需要了解kettle的运行过程,如上图,步骤1,2,3虽然是按照顺序执行的,但是是并行的!也就是说步骤1,2,3都是一条条数据执行的。

可以想象,步骤1不断地在抽取数据,步骤2不断地删除数据,步骤3不断地插入数据,目的数据库最后数据的多少就看各自的运行速度了。

那么怎么解决呢?

首先,把数据删除的执行脚本放在最前面,与并行的步骤分离

然后,把红圈中的勾去掉,数据删除不再一条条执行

最后执行一下,数据缺失问题也解决啦!