domingo, 19 de octubre de 2014

Lectura del Archivo json Movimientos

Lectura del Archivo json Movimientos

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