【发布时间】:2014-03-26 15:27:59
【问题描述】:
我在将非常大的 XML 文件加载到 Oracle DB (80MB) 时遇到问题。 XML 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<names>
<catalog>
<row>
<col name="NAME">John</col>
<col name="SURNAME">Smith</col>
<col name="AGE">24</col>
</row>
<row>
<col name="NAME">Matt</col>
<col name="SURNAME">Lick</col>
<col name="AGE">14</col>
</row>
</catalog>
</names>
我试图让它工作的代码如下所示:
CREATE directory TEST_DIR AS 'c:\Test';
INSERT INTO NAMES(NAME,SURNAME,AGE)
WITH t AS (SELECT xmltype(bfilename('TEST_DIR','NAMES.xml'), nls_charset_id('UTF8')) xmlcol FROM dual)
SELECT extractValue(value(x),'/row/col[@name="NAME"]') NAME
,extractValue(value(x),'/row/col[@name="SURNAME"]') SURNAME
,extractValue(value(x),'/row/col[@name="AGE"]') AGE
FROM t,TABLE(XMLSequence(extract(t.xmlcol,'/names/catalog/row'))) x;
我得到的是无限循环(我等待了 4 小时以请求结束。)当我尝试使用像 40MB 这样的小一点的文件时,它起作用了——我得到的信息是在 253 秒内插入了 160 000 条记录。 是否有任何参数或其他东西可以使此导入也适用于更大的文件?我做错了什么?
干杯
【问题讨论】: