从unix系统加载oracle中的文本文件

时间:2012-03-07 09:41:33

标签: oracle unix sql-loader

我的文字文件包含以下方式的字段。

"64252368","7489040","305762",
"64285217","12132108","787341",

我正在使用以下控制文件。

OPTIONS (SKIP=1)
LOAD DATA
TRUNCATE INTO TABLE test_table
FIELDS TERMINATED BY '",'

(
        LEARNEVENT_ID,
        ORGANIZATION,
        COURSE_ID
)

但是,我收到了错误:

Record 1: Rejected - Error on table test_table, column LEARNEVENT_ID
ORA-01722: invalid number

请帮助我。

2 个答案:

答案 0 :(得分:2)

您需要更改ctl文件以包含OPTIONALLY ENCLOSED BY选项。

OPTIONS (SKIP=1)
LOAD DATA
TRUNCATE INTO TABLE test_table
FIELDS TERMINATED BY ','
 OPTIONALLY ENCLOSED BY '"'
(
        LEARNEVENT_ID,
        ORGANIZATION,
        COURSE_ID
)

我建议在reading上使用SQL*Loader

答案 1 :(得分:0)

问题在于用引号“”封装数字,而你的字段以'“结尾,”根本不会删除引号。

试试这个

OPTIONS(SKIP=1)
LOAD DATA
TRUNCATE INTO TABLE test_table
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(
  LEARNEVENT_ID "replace ( :LEARNEVENT_ID ,'"', '')",
  ORGINAZATION "replace ( :ORGINAZATION ,'"', '')",
  COURSE_ID "replace ( :COURSE_ID ,'"', '')"
)