如何使用Oracle Sql Loader使用当前时间戳填充时间戳字段
我正在使用SQL Loader读取一个以管道分隔的文件,并希望填充我要填充的表中最后更新的字段。我的控制文件如下所示:如何使用Oracle Sql Loader使用当前时间戳填充时间戳字段,oracle,sql-loader,Oracle,Sql Loader,我正在使用SQL Loader读取一个以管道分隔的文件,并希望填充我要填充的表中最后更新的字段。我的控制文件如下所示: 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 )
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
)
对于上次更新的\u字段,我尝试了SYSTIMESTAMP和CURRENT\u TIMESTAMP,两者都不起作用。然而,SYSDATE工作正常,但没有给我一天中的时间
我对SQL加载器是全新的,所以我对它能做什么或不能做什么知之甚少。谢谢。您是否尝试过以下方法: 当前时间戳[精度] 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 与:
我接受了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'
然后再与
选择SYSDATE FROM DUAL如果要使用默认定义的表,可以使用:
ROWDATE EXPRESSION "DEFAULT"
还是不喜欢。给我这个错误:SQL*Loader-350:第17行的语法错误。应为或找到当前的\u时间戳。LAST_UPDATED CURRENT_timestamp3您可以尝试这样做:LAST_UPDATED EXPRESSION从dual或LAST_UPDATED EXPRESSION CURRENT_timestamp3中选择CURRENT_timestamp3他,好的,效果很好:LAST_UPDATED EXPRESSION CURRENT_timestamp3,出于某种原因,SELECT from dual选项没有。然而,结果表明SYSDATE可以很好地工作。我将在回答中解释。SYSDATE返回一个日期数据类型,但它包括小时分钟和秒。CURRENT_TIMESTAMP返回一个时间戳数据类型,该数据类型下降到小数秒。这两个都有内部表示,例如日期为7字节,客户端选择如何显示它们。这不起作用-您根本没有更改日期,而是更改了不同的会话。
ROWDATE EXPRESSION "DEFAULT"