Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

enviar xml para sql


Confira a série de três partes sobre SQL XML em 15 segundos:http://www.15seconds. com/Issue/050803.htm .

Eu pessoalmente usaria as funções SQL XQuery para fragmentar seu XML em pedaços e armazená-los no SQL Server.

Se você tiver algo como:
<data>
  <person>
     <name>Jones</name>         
     <firstname>Peter</firstname>
  </person>
  <person>
     <name>Smith</name>         
     <firstname>Frank</firstname>
  </person>
<data>

você pode escrever algo como:
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)

Então, basicamente, o .nodes função fragmenta seu XML em uma "pseudo-tabela" Data.Person - cada <person> entrada torna-se uma linha na tabela.

Com o .value() função, você pode extrair valores únicos desses nós XML fragmentados. Agora você tem vários campos varchar(20), que podem ser, por exemplo, inserido em uma tabela.

Este método funciona bem se o seu XML for bastante pequeno (algumas centenas de entradas). Se você tiver arquivos XML enormes, talvez queira investigar outros métodos, como Carregamento XML em massa .