Creació del Script para cargar Catálogos

 Fecha: Domingo 14 de junio de 2026

Hora de inicio: 3:35 p.m.

Hora de finalización: 5:05 p.m.

Total de horas trabajadas: 1 h 30 min

El objetivo de esta sesión fue desarrollar el script encargado de leer el archivo XML de catálogos e insertar sus datos en las tablas correspondientes de la base de datos. El archivo XML contiene información inicial necesaria para el funcionamiento del sistema, como los tipos de movimiento, tipos de deducción, jornadas, feriados, tipos de evento, puestos y usuarios.

En este caso, el archivo se encuentra almacenado en Azure Blob Storage, por lo que el script debía leerlo desde esa ubicación y posteriormente procesar cada uno de sus nodos.

 

Actividades realizadas

3:35 p.m. – 4:00 .m.

Lectura del archivo XML

Primero revisé la estructura del xml para identificar las rutas de cada catálogo y los atributos que debía obtener.

Después declaré una variable de tipo XML llamada @xmlDatos.

Para leer el archivo desde Azure Blob Storage utilicé OPENROWSET junto con el origen de datos BlobStorsge El contenido completo del archivo se obtiene como un solo bloque y posteriormente se convierte a tipo XML.

Decidí guardar el resultado en una variable para leer el archivo una única vez y utilizar esa misma información durante todas las inserciones.

Antes de ejecutar el script también es necesario abrir la llave maestra de la base de datos, ya que esta permite acceder a las credenciales configuradas para la conexión con Azure.

Img. 1: Lectura del archivo XML desde Azure Blob Storage y almacenamiento en la variable @xmlDatos.

4:00 p.m. - 4:45 a.m.

Inserción de los catálogos

Para obtener los datos del XML utilicé el método .nodes , indicando la ruta correspondiente a cada grupo de elementos. Luego utilicé .values() para extraer los atributos de cada nodo y convertirlos al tipo de dato requerido por las tablas.

Las inserciones se realizaron respetando el orden de las dependencias entre las tablas.

Primero se insertaron los tipos de movimiento y luego los tipos de deducción, ya que TipoDeduccion tiene una llave foránea hacia TipoMovimiento.

En el XML, el tipo de movimiento asociado con una deducción se encuentra almacenado por nombre. Por esta razón fue necesario realizar un INNER JOIN con TipoMovimiento para obtener su identificador antes de insertar la deducción.

Posteriormente se cargaron los siguientes catálogos:

  • Tipos de jornada.
  • Feriados.
  • Tipos de evento.
  • Puestos.
  • Usuarios.
  • Usuarios administradores.

En la mayoría de los catálogos el identificador se toma directamente del XML. La excepción es la tabla Puesto, ya que su llave primaria es IDENTITY y SQL Server genera el identificador automáticamente.

Para UsuarioAmdinistrador se tomaron únicamente los usuarios cuyo tipo fuera igual a 1. Estos usuarios primero se insertan en la tabla general Usuario y luego en la tabla específica de administradores.

Img. 2: Ejemplo de extracción de nodos del XML e inserción de los catálogos en las tablas.

 

4:45 p.m. - 5:05 p.m.

Verificación de los datos

Al finalizar las inserciones agregué una consulta de verificación.

Esta consulta utiliza COUNT(*) sobre cada una de las tablas cargadas y une los resultados mediante UNION ALL.

De esta manera es posible revisar rápidamente si la cantidad de registros insertados coincide con la cantidad esperada según el archivo XML.

Las cantidades esperadas eran:

  • 8 tipos de movimiento.
  • 4 tipos de deducción.
  • 3 tipos de jornada.
  • 9 feriados.
  • 23 tipos de evento.
  • 10 puestos.
  • 3 usuarios.
  • 3 usuarios administradores.

Realicé la ejecución del script y verifiqué que los catálogos incluidos se cargaran correctamente.

Resultado de la sesión

Durante esta sesión se completó el script de carga de catálogos desde XML.

El script permite:

  • Leer el archivo desde Azure Blob Storage.
  • Convertir su contenido al tipo XML de SQL Server.
  • Recorrer los nodos mediante .nodes().
  • Obtener los atributos mediante .value().
  • Insertar los catálogos respetando sus dependencias.
  • Resolver por nombre el tipo de movimiento asociado con cada deducción.
  • Insertar los puestos utilizando su llave IDENTITY.
  • Separar los usuarios administradores en su tabla correspondiente.
  • Verificar la cantidad de registros cargados.

El desarrollo fue relativamente sencillo. La parte que requirió mayor cuidado fue mantener el orden de inserción, ya que algunas tablas dependían de información que debía existir previamente.

 
Referencias


  • Script de Carga de datos creado en la Tarea 2

Comentarios

Entradas más populares de este blog

Creación del repositorio y estructura básica del proyecto