domingo, 23 de noviembre de 2014

Lectura de Archivos XML y Creacion de Tablas para la Migracion



Descripción:

Se inicio el proceso de llenar la base de datos con los archivos.

En esto no hubo mayor investigación ya que ambos estudiantes contabamos con los de los proyectos anteriores facilitando el trabajo y la busqueda en internet.

Problemas:

No se encontraron mayores problemas, nada mas de adaptación del codigo.



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

-- Verifica si la tabla existe, para eliminarla
IF OBJECT_ID('XMLDatosGenerales', 'U') IS NOT NULL
 DROP TABLE XMLDatosGenerales;
GO

-- Crea una nueva tabla
CREATE TABLE XMLDatosGenerales
(
 ID INT IDENTITY(1,1) PRIMARY KEY,
 TipoOperacion NVARCHAR(MAX) NOT NULL,
    Nombre NVARCHAR(MAX) NOT NULL,
    FKLocalidad NVARCHAR(MAX) NOT NULL,
    numeroAsiento NVARCHAR(MAX) NOT NULL,
    Fecha NVARCHAR(MAX) NOT NULL,
    Hora NVARCHAR(MAX) NOT NULL,
 FKTipoShow NVARCHAR(MAX) NOT NULL,
 Descripcion NVARCHAR(MAX) NOT NULL,
 Precio NVARCHAR(MAX) NOT NULL
)
GO

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

-- Verifica si la tabla existe, para eliminarla
IF OBJECT_ID('XMLMovimientos', 'U') IS NOT NULL
 DROP TABLE XMLMovimientos;
GO

-- Crea una nueva tabla
CREATE TABLE XMLMovimientos
(
 ID INT IDENTITY PRIMARY KEY,
 TipoOperacion NVARCHAR(MAX) NOT NULL,
    FKAsiento NVARCHAR(MAX) NOT NULL,
    FKTanda NVARCHAR(MAX) NOT NULL,
    PreciodelAsiento NVARCHAR(MAX) NOT NULL,
    FechaCompra NVARCHAR(MAX) NOT NULL,
    NombreComprador NVARCHAR(MAX) NOT NULL,
 MontoCancelado NVARCHAR(MAX) NOT NULL
)
GO

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

IF OBJECT_ID ( 'BT_SP_GetErrorInfo', 'P' ) IS NOT NULL
 DROP PROCEDURE BT_SP_GetErrorInfo;
GO
-- Create procedure to retrieve error information.
CREATE PROCEDURE BT_SP_GetErrorInfo
AS
 SELECT
  ERROR_NUMBER() AS ErrorNumber
  ,ERROR_SEVERITY() AS ErrorSeverity
  ,ERROR_STATE() AS ErrorState
  ,ERROR_PROCEDURE() AS ErrorProcedure
  ,ERROR_LINE() AS ErrorLine
  ,ERROR_MESSAGE() AS ErrorMessage;
GO

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

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

CREATE PROCEDURE BT_SP_READ_DATOSGENERAlES
AS
BEGIN
 BEGIN TRY
  -- Declaracion de variables
  DECLARE @XML xml 
  DECLARE @handle INT  
  DECLARE @PrepareXmlStatus INT  

  -- Lectura del archivo xml a una variable
  SELECT @XML= BulkColumn
  FROM  OPENROWSET(BULK 'C:\Users\Edward\SkyDrive\SQL\Proyecto_3_2014\DatosGenerales.xml', SINGLE_BLOB) x;

  EXEC @PrepareXmlStatus= sp_xml_preparedocument @handle OUTPUT, @XML

  BEGIN TRANSACTION 
  
  -- Insertar los datos del documento a una tabla
  INSERT XMLDatosGenerales
  SELECT  *
  FROM    OPENXML(@handle, '/Archivo/Fila', 2)  
   WITH (
   TipoOperacion NVARCHAR(MAX),
   Nombre NVARCHAR(MAX),
   FKLocalidad NVARCHAR(MAX),
   numeroAsiento NVARCHAR(MAX),
   Fecha NVARCHAR(MAX),
   Hora NVARCHAR(MAX),
   FKTipoShow NVARCHAR(MAX),
   Descripcion NVARCHAR(MAX),
   Precio NVARCHAR(MAX)
   )

  -- Quitar el documento
  EXEC sp_xml_removedocument @handle 

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM XMLDatosGenerales xt;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

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

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

CREATE PROCEDURE BT_SP_READ_MOVIMIENTOS
AS
BEGIN
 BEGIN TRY
  -- Declaracion de variables
  DECLARE @XML xml 
  DECLARE @handle INT  
  DECLARE @PrepareXmlStatus INT  

  -- Lectura del archivo xml a una variable
  SELECT @XML= BulkColumn
  FROM  OPENROWSET(BULK 'C:\Users\Edward\SkyDrive\SQL\Proyecto_3_2014\Movimientos.xml', SINGLE_BLOB) x;

  EXEC @PrepareXmlStatus= sp_xml_preparedocument @handle OUTPUT, @XML

  BEGIN TRANSACTION

  -- Insertar los datos del documento a una tabla
  INSERT dbo.XMLMovimientos
  SELECT  *
  FROM    OPENXML(@handle, '/Archivo/Fila', 2)  
   WITH (
   TipoOperacion NVARCHAR(MAX),
   FKAsiento NVARCHAR(MAX),
   FKTanda NVARCHAR(MAX),
   PreciodelAsiento NVARCHAR(MAX),
   FechaCompra NVARCHAR(MAX),
   NombreComprador NVARCHAR(MAX),
   MontoCancelado NVARCHAR(MAX)
   )

  -- Quitar el documento
  EXEC sp_xml_removedocument @handle 

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM dbo.XMLMovimientos xt;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

Autores:
Edward Ovares Villegas 1.5 horas
Luis Diego Flores 1 hora

0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio