Ich habe ein XML in einem Clob-Feld gespeichert. Das XML hat sich wiederholende Knoten. Mein Auszug funktioniert, wenn es keine sich wiederholenden Knoten gibt (eine Einreichung mit dem clob). Ich erhalte einen Fehler EXTRACT Wert gibt den Wert eines Knotens zurück. Was sind meine Optionen in Bezug auf meine Oracle-Version und die Tatsache, dass das Eingabefeld vom Typ CLOB auf meiner Oracle-Tabelle ist? Ich habe versucht, XMLtable, aber es war nicht in der Lage, es zum Laufen zu bringen und ich bin nicht wirklich sicher, dass es mit meinen Daten arbeiten kann, die in einem clob gespeichert werden.Oracle 11.2.0.3 EXTRACT Wert gibt den Wert eines Knotens zurück
Meine Tabelle:
CREATE TABLE "LEAD_REPORTING_CLOB"
("FILENAME" VARCHAR2(80),
"SHARED_XML" CLOB);
Mein clob:
<?xml version="1.0"?>
<LeadReport xmlns="http://www.xxx.yyy/efile">
<Lead>
<AssociatedState>
<StateOrCityCode>AZST</StateOrCityCode>
</AssociatedState>
<AssociatedState>
<StateOrCityCode>MIST</StateOrCityCode>
</AssociatedState>
<PatternDescription>MI state</PatternDescription>
<SourceIPAddress>
<IPAddress>
<IPv4AddressTxt>98.999.99.115</IPv4AddressTxt>
</IPAddress>
<IPTs>2016-04-25T10:12:19-07:00</IPTs>
</SourceIPAddress>
<SourceIPAddress>
<IPAddress>
<IPv4AddressTxt>192.888.888.888</IPv4AddressTxt>
</IPAddress>
<IPTs>2016-04-25T10:32:10-07:00</IPTs>
</SourceIPAddress>
<AdditionalInformation>
<ReturnSubmStatus>U</ReturnSubmStatus>
<EmailAddressDomain>emailchair.33xxxx.com</EmailAddressDomain>
<PhoneNumberLastFour>5553</PhoneNumberLastFour>
</AdditionalInformation>
</Lead>
<Lead>
<AssociatedState>
<StateOrCityCode>AZST</StateOrCityCode>
</AssociatedState>
<AssociatedState>
<StateOrCityCode>MIST</StateOrCityCode>
</AssociatedState>
<PatternDescription>MI state2</PatternDescription>
<SourceIPAddress>
<IPAddress>
<IPv4AddressTxt>98.444.44.444</IPv4AddressTxt>
</IPAddress>
<IPTs>2016-04-25T10:03:43-07:00</IPTs>
</SourceIPAddress>
<SourceIPAddress>
<IPAddress>
<IPv4AddressTxt>192.333.33.333</IPv4AddressTxt>
</IPAddress>
<IPTs>2016-04-25T10:20:33-07:00</IPTs>
</SourceIPAddress>
<AdditionalInformation>
<ReturnSubmStatus>U</ReturnSubmStatus>
<EmailAddressDomain>emailchair.33xxxx.com</EmailAddressDomain>
<PhoneNumberLastFour>1744</PhoneNumberLastFour>
</AdditionalInformation>
</Lead>
<Lead>
<SubmissionId>9999988861170019999</SubmissionId>
<AssociatedState>
<StateOrCityCode>AZST</StateOrCityCode>
</AssociatedState>
<AssociatedState>
<StateOrCityCode>MIST</StateOrCityCode>
</AssociatedState>
<PatternDescription>MI/AZ</PatternDescription>
<SourceIPAddress>
<IPAddress>
<IPv4AddressTxt>98.222.22.222</IPv4AddressTxt>
</IPAddress>
<IPTs>2016-04-23T22:07:16-07:00</IPTs>
</SourceIPAddress>
<SourceIPAddress>
<IPAddress>
<IPv4AddressTxt>192.666.66.666</IPv4AddressTxt>
</IPAddress>
<IPTs>2016-04-25T21:59:21-07:00</IPTs>
</SourceIPAddress>
<SourceIPAddress>
<IPAddress>
<IPv4AddressTxt>198.111.111.111</IPv4AddressTxt>
</IPAddress>
<IPTs>2016-04-26T00:12:37-07:00</IPTs>
</SourceIPAddress>
<AdditionalInformation>
<ReturnSubmStatus>R</ReturnSubmStatus>
<EmailAddressDomain>emailchair.33xxxx.com</EmailAddressDomain>
<PhoneNumberLastFour>0503</PhoneNumberLastFour>
</AdditionalInformation>
</Lead>
</LeadReport>
Meine Auswahl:
select
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead/SubmissionId',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "SubmissionId",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//StateSubmissionId',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "state_submission_id",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//StateOrCityCode',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "StateOrCityCode",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead/PatternDescription',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "PatternDescription",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//IPv4AddressTxt',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "IPv4AddressTxt",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//TCPPortNumber',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "TCPPortNumber",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//IPTs',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "IPTs",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//DeviceId',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "DeviceId",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//DeviceIdTs',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "DeviceIdTs",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//ReturnSubmStatus',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "ReturnSubmStatus",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//EFIN',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "EFIN",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//PTIN',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "PTIN",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//EmailAddressDomain',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "EmailAddressDomain",
nvl(EXTRACTVALUE(xmltype(ocr.shared_xml),
'//Lead//PhoneNumberLastFour',
'xmlns="http://www.xxx.yyy/efile"'),
'') as "PhoneNumberLastFour"
FROM
lead_reporting_clob ocr;
Das wird es tun. Vielen Dank, Alex! – Marianne
Jetzt, da ich alle Daten in den Clob geladen habe, habe ich die Abfrage versucht und den folgenden Fehler erhalten: ORA-19279: XPTY0004 - XQuery dynamischen Typ Mismatch: erwartete Singleton-Sequenz - habe Multi-Item-Sequenz – Marianne
Ich testete es mit die von Ihnen bereitgestellten Beispieldaten. Hat Ihr maximierter CLOB einen Hauptknoten mit Vielfachen eines der Unterknoten? Wenn ja, können Sie eine zweite Ebene von XMLTable haben, aber ohne ein Beispiel ist es schwer zu erklären. [Dieses Beispiel kann helfen] (http://stackoverflow.com/a/29942692/266304)? –