我正在使用hr架构创建外部表但我收到错误
" ORA-29913:执行ODCIEXTTABLEOPEN标注ORA-29400时出错: 数据盒式磁带错误KUP-00554:解析访问时遇到错误 参数KUP-01005:语法错误:找到"缺少":期待以下之一: "列,(" KUP-01007:第4行第3列 29913. 00000 - "执行%s标注错误" *原因:执行指定的标注导致错误。 *操作:检查错误消息是否采取适当的措施。"
----------------我的代码-------------------
create directory ex_tab as 'C:\My Works\External Table';
create table strecords (
st_id number(4),
st_name varchar(10),
schl_name varchar(5),
st_city varchar(15),
st_year number(4)
)
ORGANIZATION EXTERNAL
(TYPE oracle_loader
DEFAULT DIRECTORY ex_tab
ACCESS PARAMETERS
(
RECORDS DELIMITED BY newline
FIELDS TERMINATED BY ','
REJECT ROWS WITH ALL NULL FIELDS
MISSING FIELDS VALUES ARE NULL
(
st_id number(4),
st_name char(10),
schl_name char(5),
st_city char(15),
st_year number(4)
)
)
LOCATION ('strecords.txt')
);
desc strecords;
select * from strecords;
这是我的代码,请检查并查看。
答案 0 :(得分:2)
这里有几个问题。造成问题的直接原因是you have the clauses in the wrong order,但您还有MISSING FIELDS
而不是MISSING FIELD
:
...
ACCESS PARAMETERS
(
RECORDS DELIMITED BY newline
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
(
...
然后,您的field list contents对该声明的该部分无效data types;在这种情况下,您可以完全省略它,因为它们与表列定义匹配。
如果未指定字段列表,则假定数据文件中的字段与外部表中的字段的顺序相同。
所以你可以将它简化为:
create table strecords (
st_id number(4),
st_name varchar(10),
schl_name varchar(5),
st_city varchar(15),
st_year number(4)
)
ORGANIZATION EXTERNAL
(TYPE oracle_loader
DEFAULT DIRECTORY ex_tab
ACCESS PARAMETERS
(
RECORDS DELIMITED BY newline
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
)
LOCATION ('strecords.txt')
);
答案 1 :(得分:1)
针对名为
的Oracle Bug需要进行一些操作从外部表中选择返回错误ORA-29913 ORA-29400 KUP-554 KUP-1005(文档ID 302672.1)
创建外部表时,应按以下顺序指定访问参数:
以正确的顺序指定注释,记录格式信息和字段定义。即使在记录格式信息中,“由......分隔的记录”子句也应该出现在任何其他子句之前。
有关详细信息,请参阅the access_parameters clause。