外部表语法错误ORA-29913

时间:2014-07-20 06:16:51

标签: oracle oracle10g

我创建了下面的外部表,但我无法使用select * from emp检索数据,因为我收到以下错误。

你可以帮我解决这个问题。

  

ORA-29913:执行ODCIEXTTABLEOPEN标注ORA-29400时出错:数据   盒式磁带错误KUP-00554:解析访问时遇到错误   参数KUP-01005:语法错误:找到“标识符”:期待一个   of:“压缩,加密,日志文件,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')
 );

2 个答案:

答案 0 :(得分:0)

如果数据位于txt文件中,则可能意味着TYPE ORACLE_LOADER

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

答案 1 :(得分:0)

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

REJECT ROWS WITH ALL NULL FIELDS

尝试将其添加到您的ACCESS PARAMETERS

我的组织外部就像这样

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')
  );