miércoles, 5 de abril de 2017

105. Cargar nodos de XML en renglones separados

Un query muy útil para casos en los que recibimos información en XML pero nos interesan los nodos, es el siguiente:

CREATE TABLE tablaXML
(
Id INT IDENTITY PRIMARY KEY,
Datos XML,
FechaInsercion DATETIME
)

DECLARE @x xml

SELECT @x = BulkColumn FROM (
SELECT CONVERT(XML, BulkColumn) AS BulkColumn
FROM OPENROWSET(BULK 'C:\0\millones\0000000002.xml', SINGLE_BLOB) AS x) AS y

INSERT INTO tablaXML(Datos, FechaInsercion)
SELECT T.c.query('.') AS result,GETDATE() 
FROM   @x.nodes('/comprobantes/*') T(c) 
GO 

Que debo sustituir, hay que sustituir la ruta de donde se tomara el archivo, por la ruta de su archivo, y además el nombre del nodo, en mi caso fue comprobantes, por la ruta de XML de su nodo.

Que es lo que hace, bueno en primer lugar carga el XML de un archivo a una variable de tipo XML que podemos manipular, después tomando esa variable buscamos el nodo en particular con el que deseamos separar el XML, esto nos permite obtenerlo por renglones e insertarlo en una base de datos.

Esta es una forma rápida de separar XML de gran tamaño

Felices líneas

No hay comentarios.:

Publicar un comentario