Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Oracle Sql Loader使用当前时间戳填充时间戳字段_Oracle_Sql Loader - Fatal编程技术网

如何使用Oracle 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 )

我正在使用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
)
对于上次更新的\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"