最近参加的一个项目使用Kettle进行数据库清理,使用的是MySQL数据库,使用Kettle过程有一些需要注意的事情,在这里随手记录。
1、性能优化
如果是使用的MySQL数据库,可在转换的“命名参数”中增加以下设置:
rewriteBatchedStatements true
useCompression true
useServerPrepStmts false
如下图:

性能优化是一个大的话题,以后有相关的,再继续记录。
2、插入数据乱码
可以在输入和输出数据库连接中都加上配置:
characterEncoding=utf8

配置后如未生效,可尝试清除数据库缓存。
3、将TINYINT转换为Bool类型:
严格来说,Kettle只是会把类型为TINYINT(1)的字段默认转换为Bool类型。这相可以在数据库连接中加上配置禁止这个转换:
tinyInt1isBit = false

4、空字符串转为NULL
Kettle默认会将空字符串转为NULL,这样会导致数据不一致的情况,可将如下配置加入到kettle.properties以禁止这个行为:
KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y
注:当文件不存在时,新建即可,调整后需要重启Kettle。