我创建了下面的外部表,但我无法使用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')
);
答案 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')
);