我使用sqlldr导入CSV文件,我有日期多种格式的问题.
CSV文件中的日期为DD/MM/YYYY,如果没有日期则为单点
DATE_COLUMN;OTHER_COLUMN
01/01/2013;other column content 1
.;other column content 2
Run Code Online (Sandbox Code Playgroud)
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
)
Run Code Online (Sandbox Code Playgroud)
我使用时导入正在工作:
decode(:COLUMNDATE ,NULL,'.'))
Run Code Online (Sandbox Code Playgroud)
要么
to_date(:COLUMNDATE ,'DD/MM/YYYY')
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将两者结合起来时......
这是错误日志:
Record 1: Rejected - Error on table table_to_fill, column COLUMNDATE.
ORA-01858: a non-numeric character was found where a numeric was expected
Run Code Online (Sandbox Code Playgroud)
请问我该如何结合这些?
我认为"解码"函数的最后一个参数是列的默认值,我错了吗?
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
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13636 次 |
最近记录: |