[英]Query XML from a Clob and join it with a table (DB2)
I have an xml like this stored in a table: 我有一个这样的XML存储在表中:
<xml>
<attribute>name</attribute>
<value>this is my xml</value>
<logLocation>/user/apps/myLogFolder</logLocation>
<engines>
<engine>
<engineName>Engine1</engineName>
<engineLocation>$HOME/apps/engines</engineLocation>
<engineVersion>3.1416</engineVersion>
</engine>
<engine>
<engineName>Engine2</engineName>
<engineLocation>$HOME/apps/engines/backup</engineLocation>
<engineVersion>3b</engineVersion>
</engine>
</engines>
<connections>
<connection>
<jdbc>jdbc:db2://127.0.0.1:50000/localdb</jdbc>
<user>dbuser</user>
<password>{}</password>
</connection>
</connections>
</xml>
The table has the following structure: 该表具有以下结构:
id | xmlText |
(integer) | (clob) |
---------- | -------------- |
1 | [clob] |
2 | [clob] |
---------- | -------------- |
Said xmls are stored in each clob column. 所述xml存储在每个clob列中。
What I am trying to do is to search for a value and then join it with a regular table. 我想做的是搜索一个值,然后将其与常规表连接。
The query I am trying to achieve is something like this: 我试图实现的查询是这样的:
select
t1.*,
xmlValues.logLocation
from
schema.table t1,
(
XMLTABLE
(
SELECT
id,
xmlserialize(xmltext AS VARCHAR(3000)) as xmlValues
FROM
schema.myXMLTable
WHERE
id = t1.id
FETCH FIRST ROW ONLY
)
) xmlValues
where
t1.id = 1;
Since I this query will be used in some other code, it won't have access to the DB2 console. 因为我将在其他一些代码中使用此查询,所以它无权访问DB2控制台。
How can I achieve it? 我该如何实现?
Thanks. 谢谢。
Thanks to this: 由于此:
Extract data from XML Clob using SQL from db2 使用db2中的SQL从XML Clob中提取数据
I was able to get this: 我能够得到这个:
select
myJoinTable.objectName,
myJoinTable.objectType,
xmlTableValues.jdbcString,
xmlTableValues.logPath
from
myJoinTable,
(
SELECT
tb1.id as id
xmlField.jdbcString as jdbcString,
xmlField.logPath as logPath
FROM myTable tb1,
XMLTABLE(
'$xmlDoc/xml/connections' PASSING XMLPARSE(DOCUMENT tb1.xmlText) AS "xmlDoc"
COLUMNS
jdbcString varchar(200) PATH 'connection[1]/jdbc',
logPath varchar(500) PATH '../logLocation'
) AS xmlField
) xmlValuesTable
) xmlTableValues
where
myJoinTable.objectID = X
and
myJoinTable.objectID = xmlTableValues.id;
Which allows me to query what I need. 这使我可以查询所需信息。
Thanks. 谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.