我尝试过pentaho来加载csv文件并存储到数据库中。 CSV中的一列有多个类型值,如2.7777777777777E-06,0,2222,2,35.023
我的转换不支持类型转换。请帮助我修复所有类型的数字的正确模式。
错误讯息:
修改的Java Script Value.0 - ERROR(版本7.1.0.0-12,build-16y,来自2017-05-16 17.18.02版本1):意外错误 2017/11/24 10:17:01 - 修改的Java Script Value.0 - ERROR(版本7.1.0.0-12,版本1来自2017-05-16 17.18.02 by buildguy):org.pentaho.di.core。 exception.KettleValueException: 2017/11/24 10:17:01 - 修改Java Script Value.0 - Javascript错误: 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 意外错误 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 将值[Average String]转换为数字时出现意外的转换错误 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 平均字符串:无法将字符串转换为数字 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改的Java脚本值0 - 平均字符串:无法将字符串转换为数字:在位置18找到值为非数字字符[2.777777777777775e-06] 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - atg.pentaho.di.trans.steps.scriptvalues_mod.ScriptValuesMod.addValues(ScriptValuesMod.java:475) 2017/11/24 10:17:01 - 修改了Java Script Value.0 - at org.pentaho.di.trans.steps.scriptvalues_mod.ScriptValuesMod.processRow(ScriptValuesMod.java:541) 2017/11/24 10:17:01 - 修改了Java Script Value.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62) 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 在java.lang.Thread.run(Thread.java:748) 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 引起:org.pentaho.di.core.exception.KettleValueException: 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 意外错误 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改的Java Script Value.0 - 将值[Average String]转换为数字时出现意外的转换错误 2017/11/24 10:17:01 - 修改过的Java Script Value.0 - 2017/11/24 10:17:01 - 修改的Java Script Value.0 - Average String:无法将String转换为数字
答案 0 :(得分:0)
Average String
被CSV reader
读取为字符串而不是数字,并且PDI不希望它作为数字,因为它包含“e”。问候转到Javascript,而不是PDI。
解决方案2 :如果由于某种原因你不能,可以使用Select values
步骤在Metadata
标签中更改其类型。
解决方案3:如果在Javascript
步骤之前无法在数字中强制转换字符串,则必须使用显式的javascript转换:var x = Number(x);
但是,您的变量名称包含空格,并且无法在javascript变量中自动映射。 hack就是:
this["Average String"] = Number(this["Average String"]);
然后,您可以将底部表格的字段列表中的Average String
作为数字。