有一个XML文件(20MB),当我尝试使用EXTRACTVALUE从表中使用select语句提取值时需要很长时间(Hrs)。 该表包含XML_DATA作为XMLTYPE 请建议我调整SQL QUERY或任何其他替代方法以从大型xml文件中提取值
SELECT EXTRACTVALUE (VALUE (Name),'*/Name') FirstName,
.....
FROM TB_XML_type,TABLE (XMLSEQUENCE (EXTRACT (xml_data, '*/Name'))) Name
注意: XML格式是用户定义的。
答案 0 :(得分:0)
设置像你这样的表:
CREATE TABLE TB_XML_TYPE(XML_DATA XMLTYPE);
INSERT INTO TB_XML_TYPE(XML_DATA)
VALUES (XMLTYPE('<a><Name>name1</Name><Name>name2</Name></a>'));
我猜你的Name元素就在XML的根元素下面。如果是这种情况,这可能会更快。
SELECT XD.NAME FROM TB_XML_TYPE XT,
XMLTABLE('/a/Name' PASSING XT.XML_DATA
COLUMNS NAME VARCHAR2(100) PATH 'text()') XD
结果:
NAME
---------------------
name1
name2
如果没有,请确保重复的路径在XMLTABLE之后 - 这是XPath,它找到所有父元素,然后在PATH关键字之后使用XPath读取其子元素。在这种情况下,text()读取Name元素的文本内容。