SQL Loader将数字视为字符

时间:2015-08-31 10:33:23

标签: sql oracle oracle11g loader

我正在尝试从由管道“|”分隔的文本文件中加载数据使用以下控制文件:

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_varCHAR(4000)amtFLOATamt_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

0 个答案:

没有答案