2017-05-17 1 views
1

Ich habe eine Spalte mit XML - XMLMESSAGEWie Abrufen von Daten aus DB2 Clob?

XML-Beispiel in CLOB:

<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> 

Ich möchte Wert @ XPATH abzurufen: /xml/Motoren/Motor/Motorname

Früher habe ich XMLEXTRACT in Oracle verwendet und mich gefragt, ob DB2 eine ähnliche Funktion hat. Ich habe einige Antworten zu diesem Thema durchgegangen, konnte aber keine Lösung finden.

+0

getestet aussehen sollte, ist es eine Spalte CLOB oder XML Typ? Und ich nehme an, es ist DB2 LUW. –

Antwort

0

Hallo Ich habe versucht, das Problem neu zu erstellen, habe ich End-Tag für XML-Knoten

CREATE table work.dd(int id, doc clob); 

insert into work.DD VALUES (1,'<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>') 

dann Ihre Abfrage wie diese

select * from work.dd, 
XMLTABLE(
    '$d/xml/engines/engine' PASSING XMLPARSE(DOCUMENT doc) AS "d" 
    COLUMNS 
    engineName varCHAR(100) PATH 'engineName' 
) 

ich es in LUW 10.1

+0

Danke, gearbeitet. – REPLEY