ETL工具Kettle基本用法——Kettle数据同步时将空字符串当做NULL传递问题的解决
使用Kettle进行数据交互时会有个问题,那就是默认情况下,Kettle会将源数据库表字段中的空字符串,也就是:”当做:NULL传递到目的数据库表的字段中。拿MySQL举例来说,比如有两个数据库:k1k2每个数据库里都有一张表:userk1.user与k2.user的字段完全一样,都是:CREATE TABLE `user` (`id` int(11)...
·
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/80919323
本文出自【我是干勾鱼的博客】
在前在ETL工具Kettle基本用法——Kettle的安装中介绍了如何正确Kettle。
使用Kettle进行数据同步时会有个问题,那就是默认情况下,Kettle会将源数据库表字段中的空字符串,也就是2个单引号:
”
当做:
NULL
传递到目的数据库表的字段中。拿MySQL举例来说,比如有2个数据库:
k1
k2
每个数据库里都有1张表:
user
k1.user与k2.user的字段完全一样,都是:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_name` varchar(45) NOT NULL DEFAULT '' COMMENT '用户名',
`phone_id` varchar(200) NOT NULL DEFAULT '' COMMENT '手机登录后绑定的唯一标识',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=203 DEFAULT CHARSET=utf8 COMMENT='系统用户表';
表k1.user,还插入了1条数据:
INSERT INTO `user` VALUES (1,'admin','');
表k2.user是空表,没有数据。
这个时候如果要使用Kettle将k1.user表中的数据插入到k2user中,Kettle会报错:
Column 'phone_id' cannot be null
这是因为Kettle默认情况下把空字符串当作NULL处理!
解决的办法就是找到文件:
C:\Users\用户名.kettle\kettle.properties
在其中加入内容:
KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y
然后重启Kettle就可以了!
更多推荐
已为社区贡献3条内容
所有评论(0)