El dia de hoy trabajamos en la parte de ordenamiento de los XML ya que estaban desordenados y se lo hicimos saber a los compañeros encargados, Junto con detalles como el UTF-8 por dicha SQL combierte automaticamente estos datos al formato adecuado.

Se realizo la creacion de la insercion de los Catalogos 

USE Proyecto_Final;
GO
DROP Procedure  IF EXISTS Cargar_Catalogos;
GO
CREATE PROCEDURE Cargar_Catalogos
    @Datos xml = NULL,
    @doc INT =0
    as
        SELECT @Datos = od    FROM OPENROWSET (BULK 'C:\Users\aguer\Documents\GitHub\Proyecto_Final_BD1\Catalogo-Tarea-Final.xml', SINGLE_BLOB) AS TiposDoc(od) --pone la direccion donde se encuentra
        EXEC sp_xml_preparedocument @doc OUTPUT, @Datos
        --INSERTA DATOS
        INSERT INTO Pais(Id,Nombre) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/Paises/Pais' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id    [INT]'@Id',    Nombre [VARCHAR](256)'@Nombre');
        INSERT INTO Giro(Id,Id_Pais,Nombre) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/Giros/Giro' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id    [INT]'@Id',Id_Pais [INT]'@IdPais',    Nombre [VARCHAR](256)'@Nombre' );
        INSERT INTO Etapas(Id,Id_Giro,Nombre,Puntos) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/Etapas/Etapa' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id    [INT]'@Id',Id_Giro [INT]'@IdGiro',    Nombre [VARCHAR](256)'@Nombre',Puntos [INT] '@Puntos' );
        INSERT INTO Premios_Montana(Id_Giro,Id_Etapa,Nombre,Puntos) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/PremiosMontana/PremioMontana' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id_Giro [INT]'@IdGiro',Id_Etapa [INT]'@IdEtapa',    Nombre [VARCHAR](256)'@Nombre',Puntos [INT] '@Puntos' );
        INSERT INTO Equipo(Id,Nombre) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/Equipos/Equipo' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id[INT]'@Id',    Nombre [VARCHAR](256)'@Nombre' );
        INSERT INTO Corredor(Id,Nombre) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/Corredores/Corredor' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id[INT]'@Id',    Nombre [VARCHAR](256)'@Nombre' );
        INSERT INTO Juez(Id,Nombre) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/Jueces/Juez' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id[INT]'@Id',    Nombre [VARCHAR](256)'@Nombre' );
        INSERT INTO Tipo_Movimiento_Tiempo(Id,Nombre) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/TiposMovimientoTiempo/TipoMovimientoTiempo' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id[INT]'@Id',    Nombre [VARCHAR](256)'@Nombre' );
        INSERT INTO Tipo_Movimiento_Regularidad(Id,Nombre) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/TiposMovimientosPuntosRegularidad/TipoMovimientosPuntosRegularidad' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id[INT]'@Id',    Nombre [VARCHAR](256)'@Nombre' );
        INSERT INTO Tipo_Movimiento_Montana(Id,Nombre) --selecciona la tabla a llenar y las columnas
        SELECT * FROM OPENXML (@doc, 'Catalogos/TiposMovimientoPuntosMontana/TipoMovimientoPuntosMontana' ,1)   --encabezado a buscar y cantidad de elementos a agregar 2
            WITH(Id[INT]'@Id',    Nombre [VARCHAR](256)'@Nombre' );

GO
EXEC Cargar_Catalogos

 

 

para su debido porcesamiento, la creacion de la base de datos con sus respectivas tablas  

USE master
SET IMPLICIT_TRANSACTIONS OFF
alter database Proyecto_Final SET single_USEr with rollback immediate --Permite eliminar un BD en uso
DROP DATABASE IF EXISTS Proyecto_Final;  --Elimina la bd
CREATE DATABASE Proyecto_Final;
Go
USE Proyecto_Final;
GO

CREATE TABLE Pais(
    Id                [INT]    NOT NULL PRIMARY KEY,
    Nombre            [VARCHAR](256) NOT NULL
);
GO
CREATE TABLE Giro(
    Id                [INT]    NOT NULL PRIMARY KEY,
    Id_Pais            [INT]    NOT NULL,
    Nombre            [VARCHAR](256)    NOT NULL
);
GO
CREATE TABLE Etapas(
    Id                [INT]    NOT NULL PRIMARY KEY,
    Id_Giro            [INT]    NOT NULL,
    Nombre            [VARCHAR](256)    NOT NULL,
    Puntos            [INT]    NOT NULL---AQUI hay un grabe problema--Corregir--
);
GO
CREATE TABLE Premios_Montana(
    Id                [INT]    NOT NULL PRIMARY KEY IDENTITY(1,1),
    Id_Giro            [INT]    NOT NULL,
    Id_Etapa        [INT]    NOT NULL,
    Nombre            [VARCHAR](256)    NOT NULL,
    Puntos            [INT]    NOT NULL---AQUI hay un grabe problema--Corregir--
);
GO
CREATE TABLE Equipo(
    Id                [INT]    NOT NULL PRIMARY KEY,
    Nombre            [VARCHAR](256)    NOT NULL,
);
GO
CREATE TABLE Corredor(
    Id                [INT]    NOT NULL PRIMARY KEY,
    Nombre            [VARCHAR](256)    NOT NULL,
);
GO
CREATE TABLE Juez(
    Id                [INT]    NOT NULL PRIMARY KEY,
    Nombre            [VARCHAR](256)    NOT NULL,
);
GO
CREATE TABLE Tipo_Movimiento_Tiempo(
    Id                [INT]    NOT NULL PRIMARY KEY,
    Nombre            [VARCHAR](256)    NOT NULL,
);
GO
CREATE TABLE Tipo_Movimiento_Regularidad(
    Id                [INT]    NOT NULL PRIMARY KEY,
    Nombre            [VARCHAR](256)    NOT NULL,
);
GO
CREATE TABLE Tipo_Movimiento_Montana(
    Id                [INT]    NOT NULL PRIMARY KEY,
    Nombre            [VARCHAR](256)    NOT NULL,
);
GO
CREATE TABLE Competencia(
    Id                [INT]    NOT NULL PRIMARY KEY IDENTITY(1,1),
    Id_Giro            [INT]    NOT NULL,
    Codigo_Intancia    [VARCHAR](256)    NOT NULL,
    Fecha_Inicio    [DATE]    NOT NULL,
    Fecha_Fin        [DATE]    NOT NULL,
    FOREIGN KEY (Id_Giro) REFERENCES Giro(Id)
);
CREATE TABLE Participante(
    Id                    [INT]    NOT NULL PRIMARY KEY IDENTITY(1,1),
    Id_Corredor            [INT]    NOT NULL,
    Puntos_Montana        [INT]    NOT NULL,
    Puntos_Acumulados    [INT]    NOT NULL,
    Puntos_Tiempo        [INT]    NOT NULL,
    Num_Camisa            [INT]    NOT NULL,
    
    FOREIGN KEY (Id_Corredor) REFERENCES Corredor(Id),
   
);
GO
CREATE TABLE Equipos_Competencia(
    Id                [INT]    NOT NULL PRIMARY KEY IDENTITY(1,1),
    Id_Competencia    [INT]    NOT NULL,
    Id_Equipo        [INT]    NOT NULL,
    Id_Participante        [INT]    NOT NULL,
    
    FOREIGN KEY (Id_Competencia) REFERENCES Competencia(Id),
    FOREIGN KEY (Id_Equipo) REFERENCES Equipo(Id),
    FOREIGN KEY (Id_Participante) REFERENCES Participante(Id)

);
GO

Para su planificacion y programacion se tomo un tiempo total de 3 horas.

Comentarios

Entradas más populares de este blog

Poblemas con el modelo y la estructuracion de los XML