下面允许我很好地解析XML文件,但我想知道如何简化语法,使之不需要clob_pointer.txt文件,并直接指定xml。我尝试了location(XMLDIR:'XYZ.XML'),但没有成功。
DROP TABLE EXT_CLOB_TABLE;
CREATE TABLE EXT_CLOB_TABLE
(
CLOB_CONTENT CLOB
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY XMLDIR
ACCESS PARAMETERS
(
FIELDS TERMINATED BY ','
(
CLOB_POINTER CHAR(200)
)
COLUMN TRANSFORMS (CLOB_CONTENT FROM LOBFILE(CLOB_POINTER) FROM (XMLDIR)
CLOB)
)
LOCATION('clob_pointer.txt')
);
CREATE OR REPLACE VIEW ext_xml_view
AS
SELECT xmltype(CLOB_CONTENT) xml FROM ext_clob_table;
SELECT * FROM ext_xml_view;我试着把地点更改为:
location(XMLDIR:'XYZ.XML')但有以下错误;
ORA- 29913 :执行ODCIEXTTABLEFETCH标注ORA-29400时出错:打开文件/u01/oracle/product/11.2.0.4/db/rdbms/xml/ 29913。00000 -“执行%s标注中的错误”*原因:执行指定的标注会导致错误。*操作:检查错误消息,采取适当的操作。
发布于 2018-04-19 07:36:29
假设您的XML文件名为clob_pointer.txt,那么您可以使用(类似于
select
xmltype(
xmlData => bfilename('XMLDIR', 'clob_pointer.txt'),
csid => nls_charset_id('AL32UTF8')
)
from dual;sys.xmltype有一个接受bfile定位器的构造函数。当然,由于它不知道文件中使用的字符集,因为在本例中它是Oracle的二进制文件,所以您还必须向csid参数提供字符集标识符。
https://stackoverflow.com/questions/49865945
复制相似问题