2016-08-24 19 views
0

我想用oracle外部表功能将平面文件加载到数据库中,但在我创建的外部表上执行SELECT语句时遇到错误。 下面是我下面的具体步骤 -外部表错误 - ORA-29913:执行ODCIEXTTABLEOPEN标注出错

/user2/cbusdev01/smp43/domains/columbus/tools>mkdir data_1 
/user2/cbusdev01/smp43/domains/columbus/tools>chmod 777 data_1 

创建_1文件夹add_len.csv Barbados_1000230,2461000230,2461000230,SSLN 00 0 00 138 Barbados_1000229,2461000229,2461000229,SSLN 00中的文件0 00 139 Barbados_1000228,2461000228,2461000228,SSLN 00 0 03 14

login to sysdba - grant create any directory to cbusdev01cm; 授予读取,在DIRECTORY data_1上写入到cbusdev01cm;

现在创建一个外部表 -

CREATE TABLE add_len_ext (
    country_code  VARCHAR2(20), 
    sip    NUMBER, 
    tn    NUMBER, 
    len    VARCHAR2(30) 
) 
ORGANIZATION EXTERNAL (
    TYPE ORACLE_LOADER 
    DEFAULT DIRECTORY data_1 
    ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE 
    BADFILE data_1:'bad.bad' 
    LOGFILE data_1:'log.log' 
    FIELDS TERMINATED BY ',' 
    MISSING FIELD VALUES ARE NULL 
    (
     country_code  CHAR(50), 
     sip    CHAR(50), 
     tn    CHAR(50), 
     len    CHAR(50) 
    ) 
) 
    LOCATION (data_1:'add_len.csv') 
) 
PARALLEL 5 
REJECT LIMIT UNLIMITED; 

Table ADD_LEN_EXT created. 

然后我火SELECT语句

select * from ADD_LEN_EXT; 

,这让我 -

ORA-29913: error in executing ODCIEXTTABLEOPEN callout 
ORA-29400: data cartridge error 
error opening file /user2/cbusdev01/smp43/domains/columbus/tools/log.log 
29913. 00000 - "error in executing %s callout" 
*Cause: The execution of the specified callout caused an error. 
*Action: Examine the error messages take appropriate action. 

我没有得到这个错误! 我已授予所有关注的权限,但错误仍在。

我使用 -

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production 
PL/SQL Release 11.2.0.3.0 - Production 
"CORE 11.2.0.3.0 Production" 
TNS for Linux: Version 11.2.0.3.0 - Production 
NLSRTL Version 11.2.0.3.0 - Production 

回答

1

我没有看到create directory声明。它是指tools还是tools/data_1

错误消息提到操作系统目录/user2/cbusdev01/smp43/domains/columbus/tools,而不是你的新的data_1子目录。

+0

是william是一个原因,另一个是我需要在DB服务器上创建此文件不在这里,所以当我这样做时,问题得到解决! – mradul