Aufteilen von XML-Daten in postgresql
In der SQL Server 2005-T-SQL-Sprache kann ich shred XML-Wert die folgende Weise:
SELECT
t.c.value('./ID[1]', 'INT'),
t.c.value('./Name[1]', 'VARCHAR(50)')
FROM @Xml.nodes('/Customer') AS t(c)
wo @Xml ist ein xml-Wert so etwas wie
'<Customer><ID>23</ID><Name>Google</Name></Customer>'
Kann mir jemand helfen, das gleiche Ergebnis zu erzielen in PostgreSQL (wahrscheinlich in PL/pgSQL)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
xpath
Funktion zurückgegeben wird ein array von Knoten so können Sie extrahieren von mehreren Partnern. Normalerweise würden Sie so etwas tun:Wo Sie
unnest(xpath(...))
zu brechen, einen großen Teil des xml in der Zeile Größe Bisse, undxpath()
zu extrahieren einzelner Werte. Extrahieren Sie den ersten Wert aus einer XML-array, casting, umtext
und dann Gießen zuint
(oderdate
,numeric
etc) ist nicht wirklich bequem. Ich habe einige Hilfsfunktionen auf meinem blog, um dies zu erleichtern, finden Sie XML-Parsing in PostgresVerwenden die xpath-Funktion in PostgreSQL zur Verarbeitung der XML.
Edit: Beispiel: