【发布时间】:2014-08-23 06:54:22
【问题描述】:
我在文件中将“19851003”作为出生日期传递,但在日志文件中出现以下错误。
ORA-01841: (full) year must be between -4713 and +9999, and not be 0
知道为什么会出现错误,因为我只将它作为字符串传递
日志文件错误:
error processing column DATE_OF_BIRTH in row 2 for datafile /xfer/x/directory/filename.csv
ORA-01841: (full) year must be between -4713 and +9999, and not be 0
我的餐桌代码:
CREATE TABLE table_name
(
ID VARCHAR2(10 BYTE),
FIRST_NAME VARCHAR2(150 BYTE),
LAST_NAME VARCHAR2(150 BYTE),
MIDDLE_NAME VARCHAR2(150 BYTE),
DATE_OF_BIRTH DATE
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY DIRECTORY_TABLES
ACCESS PARAMETERS
(RECORDS DELIMITED BY '\n'
SKIP 1
BADFILE DIRECTORY_TABLES:'filelist.bad'
LOGFILE DIRECTORY_TABLES:'filelist.log'
DISCARDFILE DIRECTORY_TABLES:'filelist.dsc'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
(ID ,
FIRST_NAME ,
LAST_NAME ,
MIDDLE_NAME ,
DATE_OF_BIRTH DATE "YYYYMMDD"
)
)
LOCATION (DIRECTORY_TABLES:'filename.csv')
)
REJECT LIMIT 0
NOPARALLEL
NOMONITORING;
我的 CSV 文件:
"id","First Name","Last Name","MI","DOB"
"2","Felicia","Brown","M","19810209"
"3","Jose","Romero","M","19890706"
"4","Valerie","Moore","","19621112"
【问题讨论】:
-
该表是否需要该特定列的日期数据类型?
-
请查看编辑。我添加了我的代码
-
您的
filename.csv中是否存在不良数据? -
我猜你希望
FIELDS TERMINATED BY行的最后一个字符是撇号,但它是另外一回事 - 看看上面突出显示的自动语法 - 它相当混乱。尝试将最后一个字符更改为适当的撇号。 (这可能只是在此处发布时格式错误,但可能不是...... :-)。分享和享受。 -
@user3809240 - 这不是 Bob 的意思。查看
FIELDS TERMINATED BY ',’- 最后一个字符是’而不是'。这看起来像是一个智能报价问题。稍后您似乎也有}。能否也显示 CSV 文件的前几行?
标签: sql oracle plsql sql-loader oracle12c