Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

envoyer xml vers sql

Découvrez la série en trois parties sur SQL XML sur 15seconds :http://www.15seconds. com/Issue/050803.htm .

Personnellement, j'utiliserais les fonctions SQL XQuery pour déchiqueter votre XML en morceaux et les stocker dans SQL Server.

Si vous avez quelque chose comme :

<data>
  <person>
     <name>Jones</name>         
     <firstname>Peter</firstname>
  </person>
  <person>
     <name>Smith</name>         
     <firstname>Frank</firstname>
  </person>
<data>

vous pouvez écrire quelque chose comme :

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)

Donc, en gros, les .nodes la fonction détruit votre XML dans une "pseudo-table" Data.Person - chaque <person> l'entrée devient une ligne dans le tableau.

Avec le .value() fonction, vous pouvez extraire des valeurs uniques de ces nœuds XML déchiquetés. Vous avez maintenant un tas de champs varchar(20), qui peuvent être par exemple inséré dans un tableau.

Cette méthode fonctionne bien si votre XML est assez petit (quelques centaines d'entrées). Si vous avez d'énormes fichiers XML, vous voudrez peut-être étudier d'autres méthodes, telles que Chargement groupé XML .