将XML插入Oracle表会导致找不到文件错误

时间:2016-02-22 18:34:26

标签: xml oracle

我正在尝试将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目录中有这个文件。

1 个答案:

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