我需要转换格式为这样的传入日期时间,2/5/2010 12:00:00 AM
它必须作为"MM/DD/YYYY"
. 我一直在研究,但找不到用于强制转换或截断传入日期时间的语法。我收到这个错误
SQL*Loader-350: Syntax error at line 11.
Expecting "," or ")", found "(".
, trunc(EXAMPLE_DATE) DATE "MM/DD/YYYY" NULLIF (EXAMPLE_DATE
当我尝试使用此代码时
OPTIONS (READSIZE=20971520, BINDSIZE=20971520, ROWS=10000, ERRORS=90000)
LOAD DATA
INFILE *
INTO TABLE EXAMPLE.TABLE
APPEND
FIELDS TERMINATED BY ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
EXAMPLE1 CHAR NULLIF (EXAMPLE1=BLANKS)
, EXAMPLE2 CHAR NULLIF (EXAMPLE2=BLANKS)
, trunc(EXAMPLE_DATE) DATE "MM/DD/YYYY" NULLIF (EXAMPLE_DATE=BLANKS)
)
我已经尝试使用 to_date、trunc 和 to_char,但我不太确定使用哪个,以及使用什么语法。显然我不能EXAMPLE_DATE
像我试图那样截断。
编辑:原始代码如下所示
OPTIONS (READSIZE=20971520, BINDSIZE=20971520, ROWS=10000, ERRORS=90000)
LOAD DATA
INFILE *
INTO TABLE EXAMPLE.TABLE
APPEND
FIELDS TERMINATED BY ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
EXAMPLE1 CHAR NULLIF (EXAMPLE1=BLANKS)
, EXAMPLE2 CHAR NULLIF (EXAMPLE2=BLANKS)
, EXAMPLE_DATE DATE "MM/DD/YYYY" NULLIF (EXAMPLE_DATE=BLANKS)
)
这段代码在一个只有日期MM/DD/YYYY
格式的 csv 文件中按预期工作,但是当给定一个如下所示的日期时间时:2/5/2010 12:00:00 AM
它将.bad
在 csv 目录中输出一个文件。
您需要控制文件中的格式与您在数据文件中获得的值相匹配:
, EXAMPLE_DATE DATE "MM/DD/YYYY HH:MI:SS AM" NULLIF (EXAMPLE_DATE=BLANKS)
我设置了一个表格以匹配您的示例:
create table example_table (example1 varchar2(10), example2 varchar2(10), example_date date);
以及一个包含以下内容的数据文件:
A,B,2/5/2010 12:00:00 AM
和一个控制文件:
OPTIONS (READSIZE=20971520, BINDSIZE=20971520, ROWS=10000, ERRORS=90000)
LOAD DATA
INFILE *
INTO TABLE EXAMPLE_TABLE
APPEND
FIELDS TERMINATED BY ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
EXAMPLE1 CHAR NULLIF (EXAMPLE1=BLANKS)
, EXAMPLE2 CHAR NULLIF (EXAMPLE2=BLANKS)
, EXAMPLE_DATE DATE "MM/DD/YYYY HH:MI:SS AM" NULLIF (EXAMPLE_DATE=BLANKS)
)
运行通过报告:
Commit point reached - logical record count 1
和日志文件说:
Table EXAMPLE_TABLE:
1 Row successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
并且该表填充了该数据:
select * from example_table;
EXAMPLE1 EXAMPLE2 EXAMPLE_DA
---------- ---------- ----------
A B 2010-02-05
你还说:
它必须作为“MM/DD/YYYY”进入表格
它必须作为日期进入表格。日期没有任何固有的人类可读格式;Oracle 使用其自己的内部表示来高效且明确地存储数据。当您查询表格时,您的客户端将使用其自己的设置或您的会话NLS_DATE_FORMAT
设置将其转换为可识别的格式以进行显示。如果您以您显示的格式看到日期,那么这就是您的客户端/会话设置为显示它们的格式。我的配置为 YYYY-MM-DD,所以这就是您在上面查询的输出中看到的内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句