我正在尝试从由管道“|”分隔的文本文件中加载数据使用以下控制文件:
OPTIONS (DIRECT = FALSE, SKIP = 2, ERRORS = 2147483647)
LOAD INTO TABLE <table>
APPEND FIELDS TERMINATED BY '|'
TRAILING NULLCOLS (
desc CHAR (4000),
sl_no CHAR (500),
amt_var CHAR (4000),
amt "DECODE(NVL(LENGTH(TRIM(TRANSLATE(:amt_var, ' +-.0123456789E',' '))),0),0,:amt_var,0)"
)
此处amt_var
为CHAR(4000)
,amt
为FLOAT
。 amt_var
列加载了平面文件中的数据,这些数据可能是浮点数或文本,这就是我使用TRANSLATE
来识别并相应地在amt
字段中保存数字的原因。
问题:加载后,列amt
中的所有数据都显示为0.0
。换句话说,该列中的所有数据都被解释为字符而不是数字。但是,我可以清楚地看到列中的大多数数据都是数字。可能是什么原因?
示例数据:
Header Title|Line||
Desc|Line|Amount
Some text here |ABCD0001|58847811
Some text here |ABCD0002|111881
Some text here |ABCD0003|1571