我已经装了几个XML文件到Oracle数据库(在Linux的x64 11gR2的),我不得不使用FN:字符串加入到成功地导入包含多个记录的XML文件。
该数据已登陆后/已使用SQL * Loader被导入到XMLTYPE表,我已经发布了从XMLType表中的XML数据传输到正规的表的查询,可以调用一个表-A
此表中现在包括一起在目标领域的进口记录所有字段(2个记录在这种情况下),所以实例。
该XML文件包含computer_brand一个条目,第一条记录的值是“戴尔”和第二记录已经拿到了价值“苹果”。 现在从XML文件中的两条记录已经选择/插入到表-A,但在同一领域,由分号分隔。 字段名称:computer_brand值:戴尔,苹果
我想要做的是(从外地不同值的数量不管,因为这个查询需要从计划作业运行)从表中选择不同的值,并通过他们通过插入自己的所有值不同的领域。
下面是我所做/使用过的东西的例子:
表-A元数据:
CREATE TABLE table_a
(
computer_brand varchar2(41),
owner varchar2(101),
address varchar2(101),
serialnumber varchar2(21)
)
我选择和插入从XMLType表导入到表-A用下面的查询数据:
insert into table_a
(computer_brand,
owner,
address,
serialnumber
)
select
a.computer_brand,
a.owner,
a.address,
a.serialnumber
from table_xml a,
xmltable (xmlnamespaces('not mentioned due to security reasons' as "tns"),
'//tns:Main' passing a.xml_file
columns
computer_brand varchar2(41) path 'fn:string-join(tns:/@computer_brand,";")',
owner varchar2(101) path 'fn:string-join(tns:/@owner,";")',
address varchar2(101) path 'fn:string-join(tns:/@address,";")',
serialnumber varchar2(21) path 'fn:string-join(tns:/serialnumber,";")')
(+) k
where upper(file_name)=upper('xmlfile.xml');
对上述查询的输出是:
computer_brand
--------------
dell;apple
owner
--------------
pete;jack
address
--------------
basement;attic
serialnumber
--------------
123444;456555
提前巨大的感谢,如果有人知道如何帮帮忙? 我一直在寻找SUBSTR()
并没有真正设法解决它..