使用kettle的java脚本对数据进行清洗,但是发现清洗完成之后无法插入数据库、excel输出。
报错如下图:
文章当中显示的错误类型为:字段类型不一致
查看源代码,可以发现kettle中的数据类型,跟java的对应数据类型如下:
case ValueMetaInterface.TYPE_STRING : parameterType = String.class; break;
case ValueMetaInterface.TYPE_NUMBER : parameterType = Double.class; break;
case ValueMetaInterface.TYPE_INTEGER : parameterType = Long.class; break;
case ValueMetaInterface.TYPE_DATE : parameterType = Date.class; break;
case ValueMetaInterface.TYPE_BIGNUMBER : parameterType = BigDecimal.class; break;
case ValueMetaInterface.TYPE_BOOLEAN : parameterType = Boolean.class; break;
case ValueMetaInterface.TYPE_BINARY : parameterType = byte[].class; break;
简单来说,就是:
STRING : String.class
NUMBER : Double.class
INTEGER : Long.class
DATE : Date.class
BIGNUMBER : BigDecimal.class
BOOLEAN : Boolean.class
BINARY : byte[].class
从上面可以看出源码当中的字段类型并不能解决该问题。
解决编码问题可以从数据的来源---数据库当中解决。
方法是:可以在sql里做下cast转换解决。
也可以通过输出的字段进行处理,用到了组件----字段选择
在元数据页添加一致的类型(长度,格式,最重要的是Binary to Normal改成true)
这样就解决啦 ~