【发布时间】:2013-02-18 08:15:37
【问题描述】:
我在 Oracle 10G 上创建了以下外部表。
connect system/password as SYSDBA
create or replace directory ext_tab as 'C:\Suman\External_Tables';
CREATE TABLE emp_ext_3(
empno NUMBER(4), first_name CHAR(20), last_name CHAR(20), dob CHAR(10))
ORGANIZATION EXTERNAL(
TYPE ORACLE_LOADER DEFAULT DIRECTORY ext_tab
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
NOBADFILE
NOLOGFILE
SKIP 1
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LRTRIM
MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
(empno INTEGER EXTERNAL (4),
first_name CHAR(20),
last_name CHAR(20),
dob CHAR(10) DATE_FORMAT DATE MASK "dd/mm/yyyy")
)
LOCATION ('employee1.dat')
)
PARALLEL
REJECT LIMIT 0;
现在如果我尝试执行 select 命令,我会收到以下错误。
SQL> select * from "SYSTEM"."EMP_EXT_3";
select * from "SYSTEM"."EMP_EXT_3"
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04040: file employee1.dat in EXT_TAB not found
ORA-06512: at "SYS.ORACLE_LOADER", line 19
但我在“C:\Suman\External_Tables”中有文件“employee1.dat”。有人可以帮助我了解为什么会出现此错误吗?
【问题讨论】:
-
在 Windows 中发生:您能否验证文件名不是 employee1.dat.txt 并且 Windows 隐藏了扩展名?
-
注意:只需要使用用户 sys/system 创建目录。外部表及其查询应由普通用户完成。
-
我已验证。文件名是employee1.dat 而不是employee1.dat.txt
-
"注意:只需要使用用户 sys/system 创建目录。外部表和对它的查询应该使用普通用户完成。"你能详细说明一下吗?普通用户是什么意思?
-
sys 和 system 仅用于管理目的。创建一个用户,创建一个表空间并将其用于应用程序/测试/家庭作业 :)