kettle数据流中空字符串和NULL值的问题

运行环境:kettle7.1

描述场景:在向mysql数据库插入数据的时候运行报错,提示(1366 - Incorrect integer value: '')的相关错误。

查找具体数据发现在向数据插入某个字段的时候该字段值为空字符串('')

PS:向mysql的表中插入空字符串时,如果被插入的字段数据类型为varchar

insert into vital_sign (id,care_address) values (1101111,'');
message
insert into vital_sign (id,care_address) values (1101111,'')
> Affected rows: 1
> Time: 0.032s

如果字段数据类型为int

insert into vital_sign (id,type) values (1101111,'');
message:
insert into vital_sign (id,type) values (1101111,'')
> 1366 - Incorrect integer value: '' for column 'type' at row 1
> Time: 0.001s

insert into vital_sign (id,type) values (1101111,null);
message:
insert into vital_sign (id,type) values (1101111,null)
> Affected rows: 1
> Time: 0.025s

分析:kettle默认情况下把空字符串当作NULL处理,如果采用默认设置的话不会出现上边的错误。但是之前因为转换的需要向mysql表中插入数据时被插入的字段设置的不能为空(not null),所以把这个默认设置修改一下了。

当时修改方法:

windows系统

在C:\Users\用户名\.kettle目录中找到kettle.properties文件,增加:

KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y

重启Kettle

linux系统(centos7)

进入当前用户的默认目录

cd /home/pentaho/.kettle

在/home/pentaho/.kettle 文件中增加:KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y

如果变回默认设置,其他的转换就会报错,所以只能通过js代码把空字符串转化为null

var body_weightNew=body_weight==''?null:body_weight;

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值