Kettle采集数据时遇到error:invalid byte sequence for encoding "UTF8": 0x00

我们项目有个需求是需要通过 Kettle把数据从 oracle采集到postgresql,然后在采集过程中发现出现了invalid byte sequence for encoding "UTF8": 0x00导致采集失败,经查阅相关资料,pg官网上解释是因为pg数据库不能存储\u0000这样的字符,明白了根本原因,解决方案就容易多了,首先是确定哪此字段会包含这种字符,为了快速定位问题,我把kettle日志设置级别为RowLevel,这样的日志非常多,每一行的数据都打印出来了,很快我们找到了出问题的那一行数据,之后写了一个java 小程序把这行数据取出来,然后逐个字段进行判断,居然发现至少有3个字段存在这种字符,而且主键也出现了。于是想了个办法,就是通过配置文件设置哪些表哪些字段需要替换\u0000为空值,然后在insertUpdate组件中获取设置,并在processRow中进行替换,搞定!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值