Import von XML-File in MS SQL-Server
Hallo,
ich habe die folgende XML-Datei und möchte sie in eine bestehende Tabelle auf unseren SQL-Server importieren:
Bisher habe ich mit dieser Form des Datentransfers keine Berührung gehabt und dachte immer XML wäre ein einfacher Standard, aber scheinbar ist das nicht so
Vielleicht sehe ich auch einfach den Wald vor lauter Bäumen nicht.
Das folgende Statement habe ich versucht:
Gibt es ein T-SQL-Statement mit dem ich diese Form von XML importieren kann?
Vielen Dank
ich habe die folgende XML-Datei und möchte sie in eine bestehende Tabelle auf unseren SQL-Server importieren:
<xml><report id="12ABCDE3-1234-ABCD-1234-1234ABDC1234" description="Report" execution="2021-06-10 10:20:53.750">
<table name="Fehlermde" rows="2">
<header>
<column no="1"><id>OrdName</id><label>OrdName</label><type>STRING</type></column>
<column no="2"><id>BestNr</id><label>BestNr</label><type>STRING</type></column>
<column no="3"><id>Objekt</id><label>Objekt</label><type>STRING</type></column>
<column no="4"><id>Datum</id><label>Datum</label><type>DATE</type></column>
</header>
<data>
<row>
<column no="1"><value>Kunde 1</value></column>
<column no="2"><value>2020-08-2291</value></column>
<column no="3"><value>Motorblock</value></column>
<column no="4"><value>2020-01-23</value></column>
</row>
<row>
<column no="1"><value>Kunde 2</value></column>
<column no="2"><value>2020-10-2431</value></column>
<column no="3"><value>Ventil</value></column>
<column no="4"><value>2020-02-11</value></column>
</row>
</data>
</table>
</report></xml>
Bisher habe ich mit dieser Form des Datentransfers keine Berührung gehabt und dachte immer XML wäre ein einfacher Standard, aber scheinbar ist das nicht so
Vielleicht sehe ich auch einfach den Wald vor lauter Bäumen nicht.
Das folgende Statement habe ich versucht:
INSERT INTO tsc_Tab1 ([OrdName], [BestNr], [Objekt], [Datum])
SELECT
MY_XML.tscCustomer.query('1').value('.', 'VARCHAR(50)'),
MY_XML.tscCustomer.query('2').value('.', 'VARCHAR(50)'),
MY_XML.tscCustomer.query('3').value('.', 'VARCHAR(50)'),
MY_XML.tscCustomer.query('4').value('.', 'Date')
FROM (SELECT CAST(MY_XML AS xml)
FROM OPENROWSET(BULK 'd:\temp\test1.xml', SINGLE_BLOB) AS T(MY_XML)) AS T(MY_XML)
CROSS APPLY MY_XML.nodes('data/row') AS MY_XML (tscCustomer);
Gibt es ein T-SQL-Statement mit dem ich diese Form von XML importieren kann?
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1186739414
Url: https://administrator.de/contentid/1186739414
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
16 Kommentare
Neuester Kommentar
Zitat von @onkel-ossi:
Bisher habe ich mit dieser Form des Datentransfers keine Berührung gehabt und dachte immer XML wäre ein einfacher Standard, aber scheinbar ist das nicht so
Ja ist ein Standard, einfach ist Geschmackssache. Was genau geht denn nicht? Liefert der Select sinnvolle Daten wenn im SSMS ausgeführt? Welche Fehlermeldung?Bisher habe ich mit dieser Form des Datentransfers keine Berührung gehabt und dachte immer XML wäre ein einfacher Standard, aber scheinbar ist das nicht so
So wie ich das sehe hast du ein Problem wie du die "Spalten" innerhalb der xml abfrägst. Genauer gesagt die Information die du haben willst sind nicht vorhanden.
Hab da selbst wenig Erfahrung aber schau dir mal anstelle von query() nodes() an.
https://docs.microsoft.com/de-de/sql/t-sql/xml/nodes-method-xml-data-typ ...
Hab da selbst wenig Erfahrung aber schau dir mal anstelle von query() nodes() an.
https://docs.microsoft.com/de-de/sql/t-sql/xml/nodes-method-xml-data-typ ...
Die Umwandlungsgeschwindigkeit ist aber definitiv abhängig von BULK Insert. Du kannst auch eine Tabelle in SQL anlegen mit einer Spalte Datentyp XML, dort importierten und dann den Select darauf machen, das läuft mit Sicherheit schneller. Bei nur einer XML die importiert werden soll ist das aber zu vernachlässigen.