在Spoon CSV文本输入中将货币解析为数字

时间:2013-03-04 16:16:59

标签: parsing etl pentaho kettle

这似乎应该很简单。

我有一个包含多个货币值的CSV文件(所以我想避免编写一堆字符串操作步骤,如果可以避免的话),我很高兴看到CSV文件输入步骤有像货币分隔符,小数符号,分组符号(我的分别是默认的“$”,“。”和“,”)。

文档描述如下:

  • 货币用于解释$ 10,000.00或E5.000,00
  • 等数字
  • 小数小数点可以是“。” (10; 000.00)或“,”(5.000,00)
  • 分组分组可以是点“,”(10; 000.00)或“。” (5.000,00)

http://wiki.pentaho.com/display/EAI/Text+File+Input

但截至目前的生产版本(4.4)......这些设置似乎没有效果。

有没有人使用数字掩码或类似功能成功,这样像“$ 10,000,238.48”这样的字符串可以产生一个可以推送到数据库中的数字?我做的任何事情都是文本输入中的“Unparsable”或插入时的“截断字段”错误...

1 个答案:

答案 0 :(得分:0)

当我在文本输入步骤中使用您的示例编号获取字段时,它将Currency,Decimal和Group分别设置为'$','。',',',它会读取您的数字就好了。它还设置格式字符串'$#,## 0.00;($#,## 0.00)',它似乎是关键部分。文本文件输入步骤将检查您从CSV中指定的行数,并猜测每列的格式。

这是PDI的数字格式表:

Number Formatting Table

如果您在同一列中混合使用不同的货币格式,我会使用UDJE步骤和此答案:

Parsing a Currency string in Java

或JavaScript Step和这个答案:

Convert Currency string with JavaScript

去除所有非数字和非小数点字符,然后通过选择值步骤传递它。请注意,如果输入列中包含混合小数分隔符,这将非常棘手。

相关问题