Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

invia xml a sql

Dai un'occhiata alla serie in tre parti su SQL XML su 15seconds:http://www.15seconds. com/Numero/050803.htm .

Personalmente userei le funzioni SQL XQuery per distruggere il tuo XML in bit e pezzi e archiviarli in SQL Server.

Se hai qualcosa come:

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

puoi scrivere qualcosa come:

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)

Quindi, in pratica, i .nodes La funzione distrugge il tuo XML in una "pseudo-tabella" Data.Person - ogni <person> la voce diventa una riga nella tabella.

Con il .value() funzione, è possibile estrarre valori singoli da quei nodi XML distrutti. Ora hai un sacco di campi varchar(20), che possono essere ad es. inserito in una tabella.

Questo metodo funziona bene se il tuo XML è abbastanza piccolo (poche centinaia di voci). Se disponi di file XML di grandi dimensioni, potresti voler esaminare altri metodi, come Caricamento in blocco XML .