sql >> Base de Datos >  >> RDS >> Sqlserver

enviar xml a sql

Consulte la serie de tres partes sobre SQL XML en 15segundos:http://www.15seconds. com/Issue/050803.htm .

Personalmente, usaría las funciones de SQL XQuery para dividir su XML en partes y almacenarlas en SQL Server.

Si tienes algo como:

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

puedes escribir 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)

Básicamente, los .nodes La función fragmenta su XML en una "pseudotabla" Data.Person - cada <person> la entrada se convierte en una fila en la tabla.

Con .value() función, puede extraer valores individuales de esos nodos XML triturados. Ahora tiene un montón de campos varchar (20), que pueden ser, p. insertado en una tabla.

Este método funciona bien si su XML es bastante pequeño (algunos cientos de entradas). Si tiene archivos XML enormes, es posible que desee investigar otros métodos, como Carga masiva de XML .