我需要转换格式化为这个2/5/2010 12:00:00 AM
的传入日期时间,它必须作为"MM/DD/YYYY"
进入表格。我一直在研究,我无法找到用于转换或截断我传入的Datetime的语法。我收到这个错误
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)
)
这段代码按照预期的方式使用csv文件只有MM/DD/YYYY
格式的日期,但是当给出如下的Datetime时:2/5/2010 12:00:00 AM
它会在csv的目录中输出一个.bad
文件。
您需要控制文件中的格式与您在数据文件中获得的值相匹配:
, 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,这就是你在我上面的查询输出中看到的内容。