我正在尝试将XML文件插入到Oracle表中。
我有movie.xml表:
name type
TITLE VARCHAR2(100)
ARTIST VARCHAR2(100)
COUNTRY VARCHAR2(15)
COMPANY VARCHAR2(10)
PRICE NUMBER(10,2)
YEAR NUMBER(4)
程序
create or replace procedure moviesxml as
movies_doc xmltype := xmltype( bfilename('isop','movie.xml'),nls_charset_id('UTF-8') );
BEGIN
insert into moviexml(title,artist,country,company,price,year)
select title,artist,country,company,price,year from xmltable(
'/catalog/cd'
passing movies_doc
columns title varchar2(100) path 'title',
artist varchar(100) path 'artist',
country varchar2(15) path 'country',
company varchar2(10) path 'company',
price number(10,2) path 'price',
year number path 'year'
);
end moviesxml;
错误是ORA-22288:文件或LOB操作FILEOPEN失败系统 找不到指定的文件。 ORA-06512:在“SYS.DBMS_LOB”,第523行 ORA-06512:在“SYS.XMLTYPE”,第287行。
但是,我在isop目录中有这个文件。
答案 0 :(得分:0)
首先,您需要为 isop 创建目录对象,以便它应该在服务器中找到文件路径。
CREATE DIRECTORY isop AS '/isop';
movies_doc xmltype := xmltype( bfilename('ISOP','movie.xml'),nls_charset_id('UTF-8') );
和isop包含xml文件,如您的情况。
如果你有绝对路径,那么
CREATE DIRECTORY isop AS 'C:\isop';
movies_doc xmltype := xmltype( bfilename('ISOP','movie.xml'),nls_charset_id('UTF-8') );