Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

xml an sql senden

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 .