我正在尝试使用 SQL-Loader 将数据加载到数据库中,但我(和其他许多人一样)对我的时间格式有疑问。由于我对 SQL-Loader 的技能有限,我无法找到可以帮助我的以前的帖子。所以这里。
我要插入的数据是:
"some text"|"some text"|"some text"|"23-APR-12 12.00.00.000000000 AM"|"some text"|"some text."|"TEXT"|"23-APR-12 12.00.00.000000000 AM"|"some text"|"some text"|"some text"|"some text"|0|
CTL 文件如下所示:
OPTIONS (ERRORS=1586)
LOAD DATA
INFILE 'SOURCE.ldr' "str '{EOL}'"
APPEND
CONTINUEIF NEXT(1:1) = '#'
INTO TABLE "DATABASE_NAME"."TABLE"
FIELDS TERMINATED BY'|'
OPTIONALLY ENCLOSED BY '"' AND '"'
TRAILING NULLCOLS (
"DOMAIN" ,
"CONTEXT" ,
"KEY" ,
"CREATED" TIMESTAMP "DD-MON-RR HH.MI.SSXFF AM" ,
"DESCRIPTION" ,
"VALUE" ,
"TYPE" ,
"CHANGED" TIMESTAMP "DD-MON-RR HH.MI.SSXFF AM" ,
"CORPORATEENGLISHVALUE" ,
"CORPORATEVALUE" ,
"ENGLISHVALUE" ,
"OLDDBKEY" ,
"FAVOURITE" )
和表:
DOMAIN VARCHAR2(255 BYTE)
CONTEXT VARCHAR2(255 BYTE)
KEY VARCHAR2(255 BYTE)
CREATED TIMESTAMP(6)
DESCRIPTION VARCHAR2(255 BYTE)
VALUE VARCHAR2(4000 BYTE)
TYPE VARCHAR2(255 BYTE)
CHANGED TIMESTAMP(6)
CORPORATEENGLISHVALUE VARCHAR2(4000 CHAR)
CORPORATEVALUE VARCHAR2(4000 CHAR)
ENGLISHVALUE VARCHAR2(4000 CHAR)
OLDDBKEY VARCHAR2(35 BYTE)
FAVOURITE NUMBER(1,0)
Oracle 数据库有这些 NLS:
Date Format: RRRR-MM-DD
Timestamp Format: RRRR-MM-DD HH24:MI:SSXFF
Timestamp TZ Format: RRRR-MM-DD HH24:MI:SSXFF TZR
我得到的错误是:
Record 1: Rejected - Error on table "DATABASE_NAME"."TABLE", column "CREATED".
ORA-26041: DATETIME/INTERVAL datatype conversion error
如果我手动修改时间戳23-APR-12 12.00.00.000000000 AM
,23-APR-12 12.00.00 AM
它可以正常工作。所以我的猜测是"CREATED" TIMESTAMP "DD-MON-RR HH.MI.SSXFF AM"
. 我还注意到,当月份显示不同时,相同的 ORA-26041 会出现错误。在英语中,October 是 show as OCT
,在瑞典语中是它的OKT
. 如果我手动更改数据文件中月份的所有英文版本,脚本就可以工作。