Kettle5 数据流中空字符串和NULL值的问题说明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kettle5 数据流中空字符串和NULL值的问题说明相关的知识,希望对你有一定的参考价值。

最近在给开发通过kettle倒每天的增量数据时候,发现执行报错了,提示目标表的某个字段存在not null 约束

原因:kettle默认情况下,空字符串和NULL是当做一样的。 an empty string and null are different.


复现环境说明:

  1、 kettle5

  2 、源机和目标机器 的sql_mode都是空。

  3、表结构类似下面这种

CREATE TABLE `com_t1_his` (
`t_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`t_t1time` int(11) DEFAULT NULL COMMENT '支付时间',
`t_hash` varchar(128) NOT NULL DEFAULT '' COMMENT '随机码',
PRIMARY KEY (`t1_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1111111 DEFAULT CHARSET=utf8



解决方法: 

以kettle5为例。

技术分享图片


KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL    设置为Y 保存记录

软件中对此的描述为: NULL vs Empty String. If this setting is set to Y, an empty string and null are different. Otherwise they are not.

    




以上是关于Kettle5 数据流中空字符串和NULL值的问题说明的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 中NULL和空值的区别

你还不知道mysql中空值和null值的区别吗?

MySQL,Oracle中空字符串和NULL

数据库怎么用非空值填充为空值?

PHP中空字符串介绍0,null,empty和false之间的关系

Null 被设置为 Formik 中空字符串的初始值,而反应原生中的 Yup 表单验证