来自CSV

时间:2017-11-24 04:52:48

标签: javascript csv pentaho pentaho-spoon pentaho-data-integration

我尝试过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转换为数字

1 个答案:

答案 0 :(得分:0)

Average StringCSV reader读取为字符串而不是数字,并且PDI不希望它作为数字,因为它包含“e”。问候转到Javascript,而不是PDI。

解决方案1:最好是阅读为Numberenter image description here

解决方案2 :如果由于某种原因你不能,可以使用Select values步骤在Metadata标签中更改其类型。

解决方案3:如果在Javascript步骤之前无法在数字中强制转换字符串,则必须使用显式的javascript转换:var x = Number(x);但是,您的变量名称包含空格,并且无法在javascript变量中自动映射。 hack就是:

this["Average String"] = Number(this["Average String"]);

然后,您可以将底部表格的字段列表中的Average String作为数字。