我在读与SQL加载管道分隔的文件,并希望来填充我填充表LAST_UPDATED场。 我的控制文件看起来是这样的:
LOAD DATA
INFILE SampleFile.dat
REPLACE
INTO TABLE contact
FIELDS TERMINATED BY '|'
OPTIONALLY ENCLOSED BY '"'
(
ID,
FIRST_NAME,
LAST_NAME,
EMAIL,
DEPARTMENT_ID,
LAST_UPDATED SYSTIMESTAMP
)
对于LAST_UPDATED领域我已经试过SYSTIMESTAMP和CURRENT_TIMESTAMP也不工作。 然而SYSDATE工作正常,但不给我一天的时间。
我是全新的,以SQL装载机所以我真的很少知道它是什么或不能够。 谢谢。
你有没有试过如下:
CURRENT_TIMESTAMP [(精度)]
select current_timestamp(3) from dual;
CURRENT_TIMESTAMP(3)
-----------------------------
10-JUL-04 19.11.12.686 +01:00
要在SQLLDR做到这一点,你需要使用表达式在CTL文件,以便SQLLDR知道对待呼叫作为SQL。
更换:
LAST_UPDATED SYSTIMESTAMP
有:
LAST_UPDATED EXPRESSION "current_timestamp(3)"
我接受RC的答案,因为最终他回答了我的要求,但我的一些Oracle的工具不熟悉导致我作出比它需要的是这个比较难。
我试图让SQL * Loader来记录时间戳,而不是只是一个日期。 当我用SYSDATE,然后做了一个选择放在桌上那也只是列出的日期(05-AUG-09)。
然后,我试过RC的方法(在评论)和它的工作。 然而,尽管如此,当我做了选择在桌子上我得到了相同的日期格式。 然后我想到它可能只是被截断显示剩余的目的。 于是我做了一个:
select TO_CHAR(LAST_UPDATED,'MMDDYYYY:HH24:MI:SS') from contact;
它然后显示的一切。 然后我又回到了控制文件,并改回了SYSDATE和运行相同的查询,果然,HH:MI:SS在那里,准确。
这一切正在做的SQLDeveloper。 我不知道为什么它默认为这种行为。 还什么扔我有以下中的SQLDeveloper两个语句。
SELECT CURRENT_TIMESTAMP FROM DUAL; //returns a full date and time
SELECT SYSDATE FROM DUAL; // returns only a date
在SQL Developer中运行:ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
然后用SELECT SYSDATE FROM DUAL检查
文章来源: How to populate a timestamp field with current timestamp using Oracle Sql Loader