jueves, 23 de octubre de 2014

Migración de datos inicio

Migración de datos inicio

Migración de los datos generales de la base de datos.

Estos se van leyendo desde una tabla en migración para la base de datos principal y todos en un mismo tiempo.




-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el procedure existe, para eliminarla
IF OBJECT_ID ( N'MG_SP_MIGRAR_DATOS_GENERALES', N'P' ) IS NOT NULL 
    DROP PROCEDURE MG_SP_MIGRAR_DATOS_GENERALES;
GO

-- Create procedure for read file
CREATE PROCEDURE [dbo].[MG_SP_MIGRAR_DATOS_GENERALES]
AS
BEGIN
 BEGIN TRY
  
  -- Declaracion de variables del procedure 
  DECLARE @counter int,@max int; -- Contador del while y max
  DECLARE @TipoOperacion nvarchar(255);

  -----------------------------------------------------------------------------------------
  -- INICIO DATOS GENERALES
  -- Set de datos 
  DECLARE @Nombre varchar(50)
  SET @counter = 1;
  SET @max = (SELECT COUNT(*) FROM dbo.FileDatosGenerales fdg)+1;

  BEGIN TRANSACTION 
   --Inicio del ciclo de while
   WHILE @counter < @max
   BEGIN
    -- Busca el tipo de operacion a ejecutar
    SET @TipoOperacion = (SELECT d.TipoOperacion FROM dbo.FileDatosGenerales  d WHERE d.ID = @counter);
   
    -- Inicio del IF
    IF @TipoOperacion = 'InsercionTipoCuenta'       -- Insercion Tipo Cuenta
    BEGIN
     -- Declaracion de tipos
     SET @Nombre = NULL
     SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);

     -- Condicion para el Insert de Tipo de Cuenta
     IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoCuenta] tc WHERE tc.Nombre = @Nombre)
     BEGIN
      INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoCuenta]
      (Nombre,Moneda,SaldoMinimoMensual,TasaInteresAnual,MultaSaldoNegativo, MultaSaldoMinimo)
      SELECT Nombre,'Colon',SaldoMinimo,TasaAnual,MultaSaldoNegativo, MultaSaldoMinimo FROM FileDatosGenerales dg
      WHERE dg.ID = @counter; 
            PRINT 'insercion tipo cuenta.';
     END
    END
    ELSE IF @TipoOperacion = 'InsercionTipoMovimientoInteres'   -- Insercion Tipo Movimiento Interes
    BEGIN
     -- Declaracion de tipos
     SET @Nombre = NULL
     SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);

     -- Condicion para el Insert de Tipo Movimiento Interes
     IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoMovimientoInteres] tc WHERE tc.Nombre = @Nombre)
     BEGIN
      INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoMovimientoInteres]
      (Nombre)
      SELECT Nombre FROM dbo.FileDatosGenerales fdg
      WHERE fdg.ID = @counter; 
            PRINT 'insercion tipo movimiento interes.';
     END
    END
    ELSE IF @TipoOperacion = 'InsercionTipoMovimientoPedientes'   -- Insercion Tipo Movimiento Pedientes
    BEGIN
     -- Declaracion de tipos
     SET @Nombre = NULL
     SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);

     -- Condicion para el Insert de Tipo Movimiento Pendiente
     IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoMovimientoPendiente] tc WHERE tc.Nombre = @Nombre)
     BEGIN
      INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoMovimientoPendiente]
      (Nombre)
      SELECT Nombre FROM dbo.FileDatosGenerales fdg
      WHERE fdg.ID = @counter; 
            PRINT 'insercion tipo movimiento pendientes.';
     END
    END
    ELSE IF @TipoOperacion = 'InsercionTipoMovimiento'     -- Insercion Tipo Movimiento
    BEGIN
     -- Declaracion de tipos
     SET @Nombre = NULL
     SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);

     -- Condicion para el Insert de Tipo Movimiento
     IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoMovimiento] tc WHERE tc.Nombre = @Nombre)
     BEGIN
      INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoMovimiento]
      (Nombre)
      SELECT Nombre FROM dbo.FileDatosGenerales fdg
      WHERE fdg.ID = @counter; 
            PRINT 'insercion tipo movimiento.';
     END
    END
    ELSE IF @TipoOperacion = 'InsercionTipoMedioMovimientos'   -- Insercion Tipo Medio Movimientos
    BEGIN
     -- Declaracion de tipos
     SET @Nombre = NULL
     SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);

     -- Condicion para el Insert de Tipo Medio Movimiento
     IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoMedio] tc WHERE tc.Nombre = @Nombre)
     BEGIN
      INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoMedio]
      (Nombre)
      SELECT Nombre FROM dbo.FileDatosGenerales fdg
      WHERE fdg.ID = @counter; 
            PRINT 'insercion tipo medio movimientos.';
     END
    END
    ELSE IF @TipoOperacion = 'InsercionTipoGestion'      -- Insercion Tipo Gestion
    BEGIN
     -- Declaracion de tipos
     SET @Nombre = NULL
     SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);

     -- Condicion para el Insert de Tipo Gestion
     IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_TipoGestion] tc WHERE tc.Nombre = @Nombre)
     BEGIN
      INSERT INTO [CuentasAhorroDB].[dbo].[CA_TipoGestion]
      (Nombre,Comision)
      SELECT Nombre,Comision FROM dbo.FileDatosGenerales fdg
      WHERE fdg.ID = @counter; 
            PRINT 'insercion tipo gestion.';
     END
    END
    ELSE IF @TipoOperacion = 'InsercionBanco'       -- Insercion Banco
    BEGIN
     -- Declaracion de tipos
     SET @Nombre = NULL
     SET @Nombre = (SELECT Nombre FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);

     -- Condicion para el Insert de Tipo Gestion
     IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_Banco] tc WHERE tc.Nombre = @Nombre)
     BEGIN
      INSERT INTO [CuentasAhorroDB].[dbo].[CA_Banco]
      (Nombre,Comision)
      SELECT Nombre,Comision FROM dbo.FileDatosGenerales fdg
      WHERE fdg.ID = @counter; 
            PRINT 'insercion banco.';
     END
    END
    ELSE IF @TipoOperacion = 'InsercionCliente'       -- Insercion Cliente
    BEGIN
     -- Declaracion de tipos
     DECLARE @Usuario varchar(50)
     SET @Usuario = (SELECT Usuario FROM dbo.FileDatosGenerales fdg WHERE ID = @counter);

     -- Condicion para el Insert de Tipo Gestion
     IF NOT EXISTS(SELECT 1 FROM [CuentasAhorroDB].[dbo].[CA_Cliente] tc WHERE tc.Usuario = @Usuario)
     BEGIN
      INSERT INTO [CuentasAhorroDB].[dbo].[CA_Cliente]
      (Nombre,Usuario,Contraseña)
      SELECT Nombre,Usuario,Contraseña FROM dbo.FileDatosGenerales fdg
      WHERE fdg.ID = @counter; 
            PRINT 'insercion cliente.';
     END 
    END
    SET @counter = @counter + 1;
   END

  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: 3.5 hora
Autor: Edward Ovares Villegas

No hay comentarios:

Publicar un comentario