2014-08-29 150 views
1

我在Oracle 11g中有一個表我試圖用SQLLDR加載。此表應包含在此行中的數據庫創建存儲創建日期一欄:SQLLDR:缺省值未填寫的列

... 
ORACLE_ROW_CREATE TIMESTAMP(6) DEFAULT SYSTIMESTAMP 
... 

我的控制文件是這樣的:在加載完成的ORACLE_ROW_CREATE列

INTO TABLE rrdbo.IBXR_STAGE_0000 
WHEN (12-26) <> 'IBXRBASELINE ' AND (30-47) <> BLANKS 
    (
    CLIENT_GROUP_ID POSITION(1:10) 
    , PORTAL_ID POSITION(11:20) 
    , ACCOUNT_BRANCH_ID POSITION(21:23) 
    , ACCOUNT_BASE_ID POSITION(24:29) 
    , RELATIONSHIP_TYPE_CD POSITION(30) 
    , CLIENT_ID POSITION(31:40) 
    , CLIENT_SEGMENT_ID POSITION(41:45) DECIMAL EXTERNAL 
    , TOA_IND POSITION(46) 
    , LINK_TYPE_CD POSITION(47) 
    , LST_UPD_TMST POSITION(48:67) TIMESTAMP "YYYYMMDDHH24MISSFF6" 
    , LST_UPD_PRCS_ID POSITION(68:77) 
    , LST_UPD_ID POSITION(78:87) 
    , MULTI_COMPANY_NUM CONSTANT "0000" 
    ) 

後沒有價值。如何在不設置DIRECT = FALSE的情況下提供此值?

回答

3

你可以使用SYSDATE

, ORACLE_ROW_CREATE SYSDATE 

但是你會失去精確到毫秒。所以,更有效地在你的情況,YOUE可以使用EXPRESSION拿起欄默認:

, ORACLE_ROW_CREATE EXPRESSION "DEFAULT" 

文檔明確地說:

在常規路徑模式和直接路徑模式,以表達參數用於將缺省值加載到列名中

...因此它不會被忽略,因爲它通常用於直接路徑加載。 (雖然我從來沒有真正使用過這個,所以我希望文檔是正確的...)

+0

這工作表示感謝。 – 2014-09-02 13:28:09