ETL:kettle根据源表只更新不插入目标表指定字段数据

环境配置

window环境下下载kettle解压之后可通过双击根目录下的Spoon.bat文件运行。
注意:kettle需要安装jdk,并且有的需要jdk版本高于1.7。如果双击之后报错,先排除jdk是否正确安装、jdk版本是否是1.8及以上。

操作目的

SQL Server类型数据库中有目标表A表,A表有目标字段(fieldA字段),需要从PostgreSQL库中的源数据表B表中,同步B表的fieldA字段值过来。更新条件为A表的fieldC字段等于B表的fieldC字段。

伪代码:
update A a set a.fieldA = b.fieldA where a.fieldC = b.fieldC

新建转换

  1. 新建一个转换文件
    在这里插入图片描述
  2. 在该转换下建立要抽取数据的数据库连接(源头数据库、目标数据库)
    在这里插入图片描述
  3. 根据数据来源选择输入类型。这里源头数据是从数据库的数据表查询出来的,所以选择“表输入”。
    在这里插入图片描述
  4. 选择输出方式。这里操作目的是只根据源表的数据更新不插入,所以选择“更新”。
    在这里插入图片描述
  5. 连接输入与输出
    在这里插入图片描述
  6. 设置表输入。双击表输入
    在这里插入图片描述
  7. 设置更新。双击更新节点
    在这里插入图片描述
    注意:记得勾选忽略查询失败。不然执行时会出现错误:
    在这里插入图片描述
    错误原因是:源数据表B表中存在A表中没有的数据,所以在A表中查询不到对应要更新的数据记录,就会出现上图中的错误。勾选了忽略查询失败之后,将会忽略更新这些在A表中没有对应数据的数据。这样就实现了,对A表只更新不插入,并且只更新FieldA字段。对于B表中有而A表中没有的数据,将会被忽略。

版权声明:本文为baidu_41327283原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。