【问题标题】:External table syntax error ORA-29913外部表语法错误 ORA-29913
【发布时间】:2014-11-20 02:43:11
【问题描述】:

我已经创建了以下外部表,但由于出现以下错误,我无法使用 select * from emp 检索数据。

你能帮我解决这个问题吗?

ORA-29913:执行 ODCIEXTTABLEOPEN 标注时出错 ORA-29400:数据 墨盒错误 KUP-00554:解析访问时遇到错误 参数 KUP-01005:语法错误:找到“标识符”:需要一个 的:“压缩、加密、日志文件、nologfile、版本”KUP-01008: 错误的标识符是:RECORDS KUP-01007:在第 1 行第 1 列

我的 SQL 是:

create or replace directory dit as  'C:\Hi'

GRANT READ ON DIRECTORY dit TO sys;
GRANT WRITE ON DIRECTORY dit TO sys;

GRANT SELECT ON dba_directories TO sys;

CREATE  TABLE emp(ename char(20), sal number) 
ORGANIZATION EXTERNAL
 (TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY dit 
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
NOBADFILE
LOGFILE 'Hi.log'
FIELDS TERMINATED BY ','
(ename char(20), sal number)
)
LOCATION('Hi.txt')
 );

【问题讨论】:

    标签: oracle oracle10g


    【解决方案1】:

    如果数据在 txt 文件中,您的意思可能是 TYPE ORACLE_LOADER

    TYPE ORACLE_DATAPUMP 使用二进制文件,所以RECORDS DELIMITED BY NEWLINE 没有任何意义。

    【讨论】:

    • 感谢您的回复....但仍然收到相同的错误消息...谁能帮帮我
    • Oracle_loader 不支持数字数据类型...它在我将其更改为 char 数据类型后工作......
    • oracle_loader 驱动程序支持的数据类型在docs.oracle.com/cd/B19306_01/server.102/b14215/et_params.htm 中列出。没有number,但有integerdoublefloat等。
    【解决方案2】:

    我今天也遇到了同样的问题,这个参数解决了我的问题:

    REJECT ROWS WITH ALL NULL FIELDS
    

    尝试将其添加到您的访问参数中

    我的外部组织是这样的

    ORGANIZATION EXTERNAL
      (
        TYPE ORACLE_LOADER
        DEFAULT DIRECTORY SYNCFILESTESTE
        ACCESS PARAMETERS
        (
            records delimited by newline
            fields terminated by ';'
            MISSING FIELD VALUES ARE NULL
            REJECT ROWS WITH ALL NULL FIELDS
         )
         LOCATION ('teste.csv')
      );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 2022-06-14
      • 2015-04-30
      相关资源
      最近更新 更多