前言
这是我第一次写博客,最近因为工作的原因,需要用到KETTLE,进行一些数据迁移的工作,初次使用,碰到了一些在我看来难以理解的问题,耽误了一些时间。所以写这个希望可以帮到后面使用的人。工作内容不能泄露,我用自己的电脑模拟出来场景。另外,我也是刚开始使用,希望大家能够一起讨论、进步,也希望有前辈们看到能指点我们。
问题
首先,正常的工作流程如下
把一个数据库中A表的数据迁移到B表中,正常流程是先把B表中以前的数据清空掉,然后从A表中读数据,再远程迁移到B表中去。工作中还有别的转换,也是这么弄得,但是偏偏就有一个表这么做报错了。报错情形如下:
解决方法一
执行清空B表数据的SQL脚本放在那里,但是不连接起来。然后不要字段选择,表输入后面直接跟表输出,在表输出里面直接选择字段就好。这里要注意,要把之前报错的表输入插件删掉,不然还是会报错,要重新建立表连接,可以在里面预览到查询的字段。听起来怪怪的,有点玄乎,但是它就是成功了,数据迁移是正常的,不会出现数据重复,每次迁移之前还是删除了以前的数据。。。如下图:
执行成功如下:
解决方法二
执行清空B表数据的SQL脚本还是和表输入连接起来,然后不要字段选择和表输出,后面跟个 插入/更新 的插件,在这个插件里面设置字段即可。如下图:
这里有个地方需要注意,插入/更新插件里面,用来比较的字段一般就是主键,我这里用的是id,然后下面对应的写入各字段,更新那里写Y即可,如下图所示:
总结
希望能够帮助到更多的使用者,让大家节省时间。也希望大家能够一起讨论各种技术问题。