微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

外部表内部错误:[kpxsFetch:错误的魔术数]

如何解决外部表内部错误:[kpxsFetch:错误的魔术数]

我们正在尝试在CSV之上创建Oracle外部表,并且Merge语句用于执行Upsert操作,以将数据从外部表复制到主表。 当我们尝试多次执行同一Merge语句时,出现奇怪的错误错误的魔术数)。

请注意,当只有插入且仅针对更新(在merge语句中存在)发生问题时,上述merge语句才起作用。如果数据已损坏,则第一次运行本身应该有错误。这只是在我们尝试多次更新/合并的情况下发生。

请告知我们所缺少的内容

错误 Error report - ORA-29913: error in executing ODCIEXTTABLEFETCH callout ORA-29401: data cartridge internal error [External Table Internal Error: [kpxsFetch:**Bad Magic Numbe**r] ]

合并声明

merge /*+ parallel(4) */ into MAIN_TABLE scpo using (select distinct xt.ACTIONCODE,xt.ITEM,xt.LOC,xt.MINSHELFLIFEDUR,xt.MINSHIPSHELFLIFEDUR,xt.SHELFLIFEDUR from EXTERNAL_TABLE xt left join MAIN_TABLE scpo on xt.ITEM = scpo.ITEM AND xt.LOC = scpo.LOC where xt.ACTIONCODE in ('ADD','CHANGE_BY_REFRESH')) ext on (ext.ITEM = scpo.ITEM AND ext.LOC = scpo.LOC and ext.ACTIONCODE in ('ADD','CHANGE_BY_REFRESH') ) when matched then update set scpo.MINSHELFLIFEDUR = ext.MINSHELFLIFEDUR,scpo.MINSHIPSHELFLIFEDUR = ext.MINSHIPSHELFLIFEDUR,scpo.SHELFLIFEDUR = ext.SHELFLIFEDUR when not matched then insert (ITEM,LOC,MINSHELFLIFEDUR,MINSHIPSHELFLIFEDUR,SHELFLIFEDUR) values (ext.ITEM,ext.LOC,ext.MINSHELFLIFEDUR,ext.MINSHIPSHELFLIFEDUR,ext.SHELFLIFEDUR) LOG ERRORS INTO ERR_MAIN_TABLE('MERGE-3369949')

外部表脚本:

CREATE TABLE EXTERNAL_TABLE 
  (    "ACTIONCODE" VARCHAR2(50 CHAR),"ITEM" VARCHAR2(50 CHAR),"LOC" VARCHAR2(50 CHAR),"MINSHELFLIFEDUR" NUMBER(38,0),"MINSHIPSHELFLIFEDUR" NUMBER(38,"SHELFLIFEDUR" NUMBER(38,0)
  ) 
  ORGANIZATION EXTERNAL 
   ( TYPE ORACLE_LOADER
     DEFAULT DIRECTORY "LANG_EXTERNAL"
     ACCESS ParaMETERS
     ( RECORDS DELIMITED BY "\n\r"  SKIP 1 FIELDS TERMINATED BY "," MISSING FIELD VALUES ARE NULL (ACTIONCODE,ITEM,SHELFLIFEDUR)    )
     LOCATION
      ( 'externaltable.csv'
      )
   )
  REJECT LIMIT UNLIMITED 
 ParaLLEL 4 ;



版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。