I'm using an External Table in Oracle 11g. I have a date field in the last column of the file. I parse that in into a TIMESTAMP column in my table definition:
CREATE TABLE e_tbl_one
(
FOPV_KEY INTEGER,
FACILITY VARCHAR2(50),
QTY_6HR NUMBER,
SECURITY_CODE NUMBER,
LOAD_DATE TIMESTAMP(0) WITH LOCAL TIME ZONE
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY MYDB_EXTERNAL_TABLE_DATA
ACCESS PARAMETERS
( records delimited by newline SKIP 1
NOBADFILE
NOLOGFILE
fields terminated by '|'
missing field values are null
(
FOPV_KEY,
FACILITY,
QTY_6HR,
SECURITY_CODE,
LOAD_DATE date 'mm/dd/yyyy hh:mi:ss am'
)
)
LOCATION (MYDB_EXTERNAL_TABLE_DATA:'e_tbl_one.txt')
)
REJECT LIMIT UNLIMITED
NOPARALLEL
NOMONITORING;
This will parse the date 11/10/2015 1:59:37 PM
but not 11/10/2015 01:59:37 PM
or 11/10/2015 12:45:12 PM
The log file shows:
KUP-04021: field formatting error for field LOAD_DATE
KUP-04026: field too long for datatype
KUP-04101: record 2 rejected in file /dbfs_direct/FS1/MYDB_EXTERNAL_TABLE/e_tbl_one.txt
The data for LOAD_DATE at this time was: 11/11/2015 07:28:36 am
. The record in the text file is:
70581692|WS3|308|2048|11/11/2015 07:41:00 am[CRLF]
Why can't this be parsed as LOAD_DATE date 'mm/dd/yyyy hh:mi:ss am'
?