0

我使用 sqlldr 导入 CSV 文件,但日期多格式存在一些问题。

CSV 文件中的日期为DD/MM/YYYY,如果没有日期,则为单点


CSV 文件


DATE_COLUMN;OTHER_COLUMN
01/01/2013;other column content 1
.;other column content 2

我的 .ctl 文件用于 sqlldr


LOAD DATA
INFILE '/path/to/my/file.csv'
REPLACE INTO TABLE table_to_fill
FIELDS TERMINATED BY ';'
(
COLUMNDATE "decode(:COLUMNDATE ,NULL,'.', to_date(:COLUMNDATE ,'DD/MM/YYYY'))",
OTHER_COLUMN
)

当我使用时导入正在工作:

decode(:COLUMNDATE ,NULL,'.'))

或者

to_date(:COLUMNDATE ,'DD/MM/YYYY')

但不是当我尝试将两者结合起来时......

这是错误日志:

Record 1: Rejected - Error on table table_to_fill, column COLUMNDATE.
ORA-01858: a non-numeric character was found where a numeric was expected

请问,我怎样才能把这些结合起来?

我以为“解码”函数的最后一个参数是列的默认值,我错了吗?

4

1 回答 1

7

SQL Loader 的“常规”语法在这里应该足够了。尝试这个:

LOAD DATA
INFILE '/path/to/my/file.csv'
REPLACE INTO TABLE table_to_fill
FIELDS TERMINATED BY ';'
(
  COLUMNDATE DATE(7) "DD/MM/YYYY" NULLIF COLUMNDATE = "."
  OTHER_COLUMN
)
于 2013-08-08T16:06:58.183 回答