【问题标题】:ORA-29913: error in executing ODCIEXTTABLEOPEN calloutORA-29913: 执行 ODCIEXTTABLEOPEN 标注时出错
【发布时间】:2018-05-22 19:06:03
【问题描述】:

我正在使用 hr 架构创建外部表,但出现错误

“ORA-29913:执行 ODCIEXTTABLEOPEN 标注时出错 ORA-29400: 数据磁带错误 KUP-00554:解析访问时遇到错误 参数 KUP-01005:语法错误:发现“缺失”:期待以下之一: “列,(” KUP-01007:在第 4 行第 3 列 29913. 00000 - “执行 %s 标注时出错” *原因:指定标注的执行导致错误。 *行动:检查错误信息采取适当的行动。”

----------------我的代码-------------------

create directory ex_tab as 'C:\My Works\External Table';


create table strecords (
st_id number(4),
st_name varchar(10),
schl_name varchar(5),
st_city varchar(15),
st_year number(4)
)
ORGANIZATION EXTERNAL
(TYPE oracle_loader
 DEFAULT DIRECTORY ex_tab
 ACCESS PARAMETERS
 (
  RECORDS DELIMITED BY newline
  FIELDS TERMINATED BY ',' 
  REJECT ROWS WITH ALL NULL FIELDS
  MISSING FIELDS VALUES ARE NULL
  (
    st_id number(4),
    st_name char(10),
    schl_name char(5),
    st_city char(15),
    st_year number(4)
  )
 )
 LOCATION ('strecords.txt')
);

desc strecords;

select * from strecords;

这是我的代码,请检查并查看。

【问题讨论】:

    标签: sql oracle plsql oracle11g ora-29913


    【解决方案1】:

    这里有几个问题。导致您的问题的直接原因是you have the clauses in the wrong order,但您也有MISSING FIELDS 而不是MISSING FIELD

    ...
     ACCESS PARAMETERS
     (
      RECORDS DELIMITED BY newline
      FIELDS TERMINATED BY ',' 
      MISSING FIELD VALUES ARE NULL
      REJECT ROWS WITH ALL NULL FIELDS
      (
    ...
    

    那么你的field list contents 的那部分声明的data types 无效;在这种情况下,您可以完全省略它,因为它们与表列定义匹配。

    如果未指定字段列表,则假定数据文件中的字段与外部表中的字段顺序相同。

    因此您可以将其简化为:

    create table strecords (
    st_id number(4),
    st_name varchar(10),
    schl_name varchar(5),
    st_city varchar(15),
    st_year number(4)
    )
    ORGANIZATION EXTERNAL
    (TYPE oracle_loader
     DEFAULT DIRECTORY ex_tab
     ACCESS PARAMETERS
     (
      RECORDS DELIMITED BY newline
      FIELDS TERMINATED BY ',' 
      MISSING FIELD VALUES ARE NULL
      REJECT ROWS WITH ALL NULL FIELDS
     )
     LOCATION ('strecords.txt')
    );
    

    【讨论】:

      【解决方案2】:

      针对称为

      的 Oracle 错误需要进行一些操作

      从外部表中选择返回错误 ORA-29913 ORA-29400 KUP-554 KUP-1005(文档 ID 302672.1)

      创建外部表时,应按以下顺序指定访问参数:

      • 评论
      • 记录格式信息
      • 字段定义

      以正确的顺序指定注释、记录格式信息和字段定义。即使在记录格式信息中,“由...分隔的记录”子句也应位于任何其他子句之前。

      更多信息,请参考the access_parameters clause

      【讨论】:

      • OP 没有收到 KUP-00552 错误,那么为什么该错误与此相关?也没有任何迹象表明存在权限错误(目前)。
      • @AlexPoole 请再看一下问题的文字KUP-00552 error..是否存在...
      • 好的。我看到 554、1005 和 1007,但没有看到 552。你在哪里看到的?
      • @AlexPoole 对不起,你说的不是 552 而是 554。我很困惑(因为,我可以创建那个表),谢谢。
      • 别担心,我也很困惑 *8-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 2017-12-15
      • 1970-01-01
      相关资源
      最近更新 更多