Sehen Sie sich die dreiteilige Serie zu SQL XML auf 15seconds an:http://www.15seconds. com/Issue/050803.htm .
Ich persönlich würde die SQL XQuery-Funktionen verwenden, um Ihr XML in Bits und Stücke zu zerlegen und diese in SQL Server zu speichern.
Wenn Sie so etwas haben wie:
<data>
<person>
<name>Jones</name>
<firstname>Peter</firstname>
</person>
<person>
<name>Smith</name>
<firstname>Frank</firstname>
</person>
<data>
Sie können etwas schreiben wie:
SELECT
Data.Person.value('(name)[1]', 'varchar(20)') as 'Name',
Data.Person.value('(firstname)[1]', 'varchar(20)') as 'First Name'
FROM
@XmlVar.nodes('/data/person') As Data(Person)
Also im Grunde die .nodes
Funktion schreddert Ihr XML in eine "Pseudo-Tabelle" Data.Person
- jeder <person>
Eintrag wird zu einer Zeile in der Tabelle.
Mit dem .value()
-Funktion können Sie einzelne Werte aus diesen geschredderten XML-Knoten extrahieren. Sie haben jetzt eine Reihe von varchar(20)-Feldern, die z. in eine Tabelle eingefügt.
Diese Methode funktioniert gut, wenn Ihr XML ziemlich klein ist (einige hundert Einträge). Wenn Sie über große XML-Dateien verfügen, sollten Sie andere Methoden untersuchen, z. B. XML-Bulkload .