Entrada 4 3 de setiembre 2018

Se trabaja por 6 horas, donde se trabaja en la carga de datos basicos para la simulacion, estos se concluyen. Luego de haber logrado una lectura existosa del xml se empieza a procesar datos y a insertarlos en las tablas respectivas.

Se tuvo errores en casos como el siguiente:
SET @XMLAdmin = (SELECT * FROM OPENROWSET(BULK 'C:\Users\Lenovo\Desktop\xml\Administrador.xml', SINGLE_BLOB) AS data)

--se prepara un handler y los prepare
DECLARE @handle INT 
DECLARE @PrepareXmlStatusAD INT

-- se realiza el handling de los xml
EXEC @PrepareXmlStatusAD= sp_xml_preparedocument @handle OUTPUT, @XMLAdmin


--Se termina cargar la variable del XML

--Se declaran variables tabla para iterar por los datos
DECLARE @TAdministrador table (sec int identity(0,1), id int, nombre nvarchar(50), DocId varchar(50), passwrd nvarchar(50))

--se insertan los valores de los xml dentro de las variables tabla
INSERT @TAdministrador (id, nombre, DocId, passwrd)
    SELECT id, nombre, valorDocId, contrasenna
    FROM OPENXML(@handle, '/dataset/Administrador') WITH (id int, nombre varchar(50) , valorDocId varchar(50), contrasenna varchar(50))

INSERT @TTipoEvento (id, nombre, descripcion)
    SELECT id, nombre, descripcion
    FROM  OPENXML(@handle, '/dataset/TipoEvento') with (id int, nombre varchar(50), descripcion varchar(100))


Pues el @handler solo nos permitia leer un xml a la vez, por lo que se tuvo que crear nuevos queries para que funcionen por separado:

DECLARE @XMLtipoEventos xml

SET @XMLtipoEventos = (SELECT * FROM OPENROWSET(BULK 'C:\Users\Lenovo\Desktop\xml\TipoEvento.xml', SINGLE_BLOB) AS data)
DECLARE @handle INT 
DECLARE @PrepareXmlStatusEV INT

EXEC @PrepareXmlStatusEV= sp_xml_preparedocument @handle OUTPUT, @XMLtipoEventos


DECLARE @TTipoEvento table (sec int identity(0,1), id int, nombre nvarchar(50), descripcion varchar(100))

INSERT @TTipoEvento (id, nombre, descripcion)
    SELECT id, nombre, descripcion
    FROM  OPENXML(@handle, '/dataset/TipoEvento') with (id int, nombre varchar(50), descripcion varchar(100))

DECLARE @loTE int, @hiTE int, @idTE int, @nombreTE varchar(50), @DescripcionTE varchar(100)
SELECT @loTE = min(sec), @hiTE = max(sec)
FROM @TTipoEvento
WHILE @loTE<= @hiTE
BEGIN
    SELECT @idTE = TE.id, @nombreTE = TE.nombre, @DescripcionTE = TE.descripcion
    FROM @TTipoEvento TE
    WHERE TE.sec = @loTE
    INSERT dbo.tipoEventos(id,nombre,descripcion)
    VALUES(@idTE,@nombreTE,@DescripcionTE)
    SET @loTE = @loTE + 1
END

Con esto la carga de valores basicos se logro y se prosiguio con el script de simulacion.

Con el trabajo de este dia se aprendio a manejar las variables tabla y el pre-procesado de datos.

Comentarios

Entradas populares de este blog