Para la lectura del archivo de movimientos.json se uso el mismo que cuentas.
Dentro de los errores mas complicado fue el de pasar de nvarchar(MAX) a DATE.
-----------------------------------------------------------------------------------------------------------------------
-- Verifica si el procedure existe, para eliminarla
IF OBJECT_ID ( N'MG_SP_LEER_MOVIMIENTOS', N'P' ) IS NOT NULL
DROP PROCEDURE MG_SP_LEER_MOVIMIENTOS;
GO
-- Create procedure for read file
CREATE PROCEDURE [dbo].[MG_SP_LEER_MOVIMIENTOS]
AS
BEGIN
BEGIN TRY
-- Declaracion de variables
DECLARE @XML xml
DECLARE @handle INT
DECLARE @PrepareXmlStatus INT
DECLARE @MyHierarchy Hierarchy
DECLARE @file NVARCHAR(MAX)
-- Creacion de la tablas temporales
CREATE TABLE #temp_aux(
dato NVARCHAR(MAX) NOT NULL
);
CREATE TABLE #temp_files(
TipoOperacion NVARCHAR(MAX),
FK_TipoMovimiento INT,
FK_Cuenta INT,
FK_TipoMedio NVARCHAR(MAX),
Fecha NVARCHAR(MAX),
Monto MONEY,
FK_TipoGestion NVARCHAR(MAX),
FK_Banco NVARCHAR(MAX)
);
BEGIN TRANSACTION
-- Insert del archivo en la tabla temporal
BULK INSERT #temp_aux
FROM 'C:\Users\Edward\SkyDrive\SQL\Proyecto_2_2014\movimientos.json';
SET @file = (SELECT * FROM #temp_aux ta)
INSERT INTO @MyHierarchy
SELECT * FROM parseJSON(@file);
--SELECT dbo.ToXML(@MyHierarchy)
SELECT @XML=dbo.ToXML(@MyHierarchy)
--SELECT @XML
EXEC @PrepareXmlStatus= sp_xml_preparedocument @handle OUTPUT, @XML
--Execute a SELECT statement using OPENXML.
INSERT #temp_files
SELECT *
FROM OPENXML (@handle, '/root/item')
WITH
(
TipoOperacion NVARCHAR(MAX) '@TipoOperacion',
FK_TipoMovimiento NVARCHAR(MAX) '@FK_TipoMovimiento',
FK_Cuenta NVARCHAR(MAX) '@FK_Cuenta',
FK_TipoMedio NVARCHAR(MAX) '@FK_TipoMedio',
Fecha NVARCHAR(MAX) '@Fecha',
Monto NVARCHAR(MAX) '@Monto',
FK_TipoGestion NVARCHAR(MAX) '@FK_TipoGestion',
FK_Banco NVARCHAR(MAX) '@FK_Banco'
);
-- Insert Movimientos
INSERT dbo.FileMovimientos
(TipoOperacion,FK_TipoMovimiento,FK_Cuenta,FK_TipoMedio,Fecha,Monto,FK_TipoGestion,FK_Banco)
SELECT TipoOperacion, FK_TipoMovimiento, FK_Cuenta, FK_TipoMedio, (SELECT CONVERT(datetime, Fecha, 103)), Monto, FK_TipoGestion, FK_Banco
FROM #temp_files tf
EXEC sp_xml_removedocument @handle
-- Delete table
DROP TABLE #temp_aux
DROP TABLE #temp_files
SELECT * FROM dbo.FileMovimientos fm
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
RETURN 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MG_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction.';
RETURN @@ERROR*-1;
END CATCH;
END
GO
Horas Trabajadas: 1.5 hora
Autor: Edward Ovares Villegas
No hay comentarios:
Publicar un comentario