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