2014-07-20 43 views
1

我創建了下面的外部表,但我無法使用select * from emp檢索數據,因爲我得到下面的錯誤。外部表語法錯誤ORA-29913

你能幫我解決這個問題嗎?

ORA-29913: error in executing ODCIEXTTABLEOPEN callout ORA-29400: data cartridge error KUP-00554: error encountered while parsing access parameters KUP-01005: syntax error: found "identifier": expecting one of: "compression, encryption, logfile, nologfile, version" KUP-01008: the bad identifier was: RECORDS KUP-01007: at line 1 column 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

你可能是指TYPE ORACLE_LOADER如果數據是TXT文件。

TYPE ORACLE_DATAPUMP使用二進制文件,所以RECORDS DELIMITED BY NEWLINE沒有任何意義。

+0

謝謝你爲你的迴應....但仍然得到相同的錯誤信息...任何人都可以請幫我出來 – MANA

+0

Oracle_loader是不支持數字數據類型...其工作後我將其更改爲char數據類型.... – MANA

+0

'oracle_loader'驅動程序支持的數據類型列於[docs.oracle.com/cd/B19306_01/server.102/b14215/et_params.htm](https://docs .oracle.com/CD/B19306_01/server.102/b14215/et_params.htm#sthref1759)。沒有'號碼',但有'整數','雙','浮動'等。 –

0

今天我有同樣的問題,而這個參數解決我的問題:

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