1为源头数据库【pgsql】
2为目标数据 库【MySQL】
pgsql 有Boolean 类型 MySQL 没有 在合并记录时会报错
合并记录.0 - ERROR (version 9.1.0.0-324, build 9.1.0.0-324 from 2020-09-07 05.09.05 by buildguy) : Unexpected error
2023/08/16 08:49:29 - 合并记录.0 - ERROR (version 9.1.0.0-324, build 9.1.0.0-324 from 2020-09-07 05.09.05 by buildguy) : org.pentaho.di.core.exception.KettleException:
2023/08/16 08:49:29 - 合并记录.0 - 不正确的数据格式,不同数据流中要合并的字段的结构和位置都应该相同.
2023/08/16 08:49:29 - 合并记录.0 -
2023/08/16 08:49:29 - 合并记录.0 - 第34列的数据类型和接收到的第一行的数据类型不同: 不同格式的行被混在了一起,Field [is_stand Integer(2)] 和 field [is_stand Boolean]的数据类型不同.
2023/08/16 08:49:29 - 合并记录.0 -
解决办法 MySQL Boolean 类型被定义成 tinyint
在 上图1 中 查询语句 做转换即可
记录排序 【默认】
获取字段 【全部即可】
合并记录
旧数据源 为 目标数据库
新数据源 为 源头数据库
标志字段自定义-最好和数据库字段区分开
【通过关键字 将两份 排序 归类在一起 数据字段为要比对的字段】
通过合并步骤 的 preview 可以看到
gz 在最后一列 有如下几个值
“Identical” : 关键字段在新旧数据源中都存在,且域值相同
“changed” : 关键字段在新旧数据源中都存在,但域值不同
“new” : 旧数据源中没有找到该关键字段
“deleted”: 新数据源中没有找到关键字段
同步数据
用来查询的关键字 我这边的业务只用主键即可 【能查出要同步的数据】
更新字段 如果 点击的是 右边 获取更新字段 自动映射的 要把上一步骤里的 自定义的 gz 去掉 否则报错
在上图 最上边 高级 里配置 操作 【根据业务需求】
Kettle数据同步时将空字符串当做NULL传递问题的解决
C:\Users\用户名.kettle\kettle.properties
KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y
然后重启Kettle就可以了!