分手了查询结果加载XML与Fn键后:在Oracle表字符串连接(Split up query res

2019-10-17 08:12发布

我已经装了几个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()并没有真正设法解决它..

文章来源: Split up query results after loading XML with fn:string-join in an Oracle table