Oracle SQLLDR:未填充默认值的列

Oracle SQLLDR:未填充默认值的列,oracle,oracle11g,sql-loader,Oracle,Oracle11g,Sql Loader,我试图用SQLLDR加载oracle11g中的一个表。此表有一列,其中应包含在数据库中创建此行时存储的创建日期: ... ORACLE_ROW_CREATE TIMESTAMP(6) DEFAULT SYSTIMESTAMP ... 我的控制文件如下所示: INTO TABLE rrdbo.IBXR_STAGE_0000 WHEN (12-26) <> 'IBXRBASELINE ' AND (30-47) <> BLANKS ( CLIENT_GROU

我试图用SQLLDR加载oracle11g中的一个表。此表有一列,其中应包含在数据库中创建此行时存储的创建日期:

...
ORACLE_ROW_CREATE TIMESTAMP(6) DEFAULT SYSTIMESTAMP
...
我的控制文件如下所示:

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"
   )
进入表rrdbo.IBXR\u STAGE\u 0000
当(12-26)“IBXRBASELINE”和(30-47)空白时
(
客户组ID位置(1:10)
,入口ID位置(11:20)
,账户、分行、身份证位置(21:23)
,帐户基础ID位置(24:29)
关系类型CD位置(30)
,客户ID位置(31:40)
,客户端\u段\u ID位置(41:45)十进制外部
,至独立位置(46)
,链接类型光盘位置(47)
,LST_UPD_TMST位置(48:67)时间戳“yyyymmddhh24missf6”
,LST_UPD_PRCS_ID位置(68:77)
,LST_UPD_ID位置(78:87)
,多公司数量常量“0000”
)
加载完成后,ORACLE_ROW_CREATE列没有值。如何在不设置DIRECT=FALSE的情况下提供此值?

您可以使用:

但你会失去毫秒精度。因此,在您的情况下,您可以使用来选择默认列:

   , ORACLE_ROW_CREATE EXPRESSION "DEFAULT"
文件明确指出:

在常规路径模式和直接路径模式中,EXPRESSION参数都可用于将默认值加载到列_name中

。。。所以它不会像直接路径加载一样被忽略。(虽然我从未实际使用过这个,所以我希望文档是正确的…)

   , ORACLE_ROW_CREATE EXPRESSION "DEFAULT"