Publicado 23. enero 2023
Actualizado en octubre de 2025
Introducción
¡Hola de nuevo! En esta serie de dos partes, mostraremos cómo KeepTool funciona junto con Oracle XML DB para importar y exportar datos XML sin problemas.
La compatibilidad nativa con XML de Oracle le permite almacenar, validar y consultar documentos XML dentro de la base de datos. Puede registrar esquemas XML, asignar tipos PL/SQL y exponer datos relacionales como XML o incorporar XML en tablas relacionales.
En este primer artículo, presentamos los fundamentos y creamos una interfaz de importación de datos funcional para la tabla HR.EMPLOYEES. El siguiente artículo tratará sobre la exportación de datos y las jerarquías maestra/detalle, como HR.DEPARTMENTS → HR.LOCATIONS.
Nos centramos en lo esencial; más adelante podrá ampliar la lógica para adaptarla a sus necesidades específicas.
Un caso de uso de ejemplo
Imaginemos una gran empresa con una base de datos central de RR. HH. Las sedes regionales mantienen réplicas locales de los datos de los empleados, que deben actualizarse desde la sede central a través de XML:
-
La sede central exporta los datos nuevos o modificados de los empleados en formato XML (por ejemplo, cada noche o por cada actualización).
-
La sede regional recibe ese XML y lo importa, añadiendo nuevos registros o actualizando los existentes.
En la parte 1, mostramos cómo importar XML al esquema local de RR. HH. En la parte 2, mostraremos cómo exportar los datos de nuevo a XML, incluyendo el manejo de las relaciones maestro/detalle.
Creación de tipos PL/SQL para XML
Trabajaremos con la tabla HR.EMPLOYEES, por lo que el primer paso es definir tipos PL/SQL que reflejen su estructura:
-
EMPLOYEE_XML_ITEM: tipo de objeto cuyos atributos se asignan a columnas en EMPLOYEES
-
EMPLOYEES_XML_LIST: una colección (TABLE) de EMPLOYEE_XML_ITEM
-
EMPLOYEES_XML_ELEM: objeto contenedor que contiene una EMPLOYEES_XML_LIST, necesario para que Oracle XML DB pueda asignarse a una raíz de documento XML
Ejecute el siguiente código en la interfaz SQL de Hora:

Creación de 3 tipos PL/SQL para definir la estructura de importación XML para la tabla EMPLOYEE
Una vez creados, puede verlos en la página Tipos PL/SQL de Hora (pestaña Todos los tipos):

La página Tipos PL/SQL de Hora muestra los 3 tipos
Hora también muestra automáticamente cualquier advertencia o error de la base de datos.
Creación del esquema XSD
Una vez que tenga sus tipos PL/SQL, puede generar un esquema XML (XSD) y registrarlo en la base de datos:
SELECT dbms_xmlschema.generateschema(
'HR',
'EMPLOYEES_XML_ELEM',
'EMPLOYEES_LIST'
) FROM DUAL;
Utilice ese resultado en un bloque PL/SQL anónimo para registrar el esquema:
begin
dbms_xmlschema.registerschema(
'EMPLOYEES.XSD',
dbms_xmlschema.generateschema(
schemaname => 'HR',
typename => 'EMPLOYEES_XML_ELEM',
elementname => 'EMPLOYEES_LIST'),
gentypes => FALSE,
genbean => FALSE,
gentables => FALSE);
end;
Después de ejecutar esto, el XSD se registra en Oracle XML DB. En la página XML de Hora verá:

Hora muestra el XSD generado que define la estructura de importación XML
- Una vista de mapeo entre los elementos XML y sus tipos PL/SQL

Hora muestra la asignación entre elementos XML y tipos PL/SQL
Envolvemos estos pasos en un paquete PL/SQL llamado XML_LOGIC.

Paquete PL/SQL que encapsula toda la lógica de creación de XSD, además de registrar el XSD
Así, más adelante, solo tendrá que llamar a
XML_LOGIC.register_xsd('EMPLOYEES').
El paquete también guarda el XSD como un archivo en un directorio Oracle predefinido, que puede entregar a los sistemas ascendentes para que conozcan el formato esperado.
Tabla de interfaz para la importación de datos
Para importar documentos XML, definimos una tabla de interfaz denominada XML_EMPLOYEES_TRANSFER. Los sistemas externos insertan sus cargas XML en esta tabla:

Esta estructura de tabla proporciona datos XML para la importación
Columnas más importantes:
-
ID: clave principal, establecida por un disparador que utiliza una secuencia de la base de datos
-
XML_DATA: CLOB que contiene el documento XML completo
-
Columnas de metadatos: marcas de tiempo, estadísticas, registros de errores
Además de esto, creamos una vista relacional XML_EMPLOYEES_TRANS_DATA_V que proyecta los datos XML en columnas relacionales:

Vista que proyecta los datos XML en columnas relacionales
Esta vista utiliza la tabla XML de Oracle u otras técnicas de conversión de XML a relacional para dividir el XML en columnas de registros. (Consulte referencias como [Conversión de Oratable XMLTable] para obtener más información sobre la tecnología).
Una vez insertada una fila en XML_EMPLOYEES_TRANSFER con XML_DATA, puede inspeccionar inmediatamente el resultado relacional a través de esa vista.
Lógica de importación de datos
Es hora de implementar la lógica central en un paquete PL/SQL XML_INTERFACE. Contiene un procedimiento (por ejemplo ProcessEmployeesImport) que hace lo siguiente:
-
Recorre las filas de XML_EMPLOYEES_TRANS_DATA_V para un ID de transferencia dado
-
Para cada registro:
-
Después de procesar todo, actualizar las estadísticas y registrar cualquier error

Este procedimiento PL/SQL empaquetado encapsula toda la lógica de importación.
….
Por lo tanto, la importación XML se realiza en dos pasos:
Mostrar los datos importados
Una vez completada la importación, puede ver los resultados directamente en Hora:

Visualización de los datos XML en el navegador de contenido de datos de Hora
Después de ejecutar el procedimiento, la vista de contenido de datos de Hora muestra el registro importado al instante, lo que confirma que los datos XML se han procesado correctamente.

El navegador de contenido de datos de Hora muestra los datos importados
Las estadísticas de la tabla de transferencia se han actualizado, resumiendo el resultado de la importación XML de un vistazo.

Se han actualizado las marcas de tiempo en la tabla de transferencia de datos
La vista XML_EMPLOYEES_TRANS_DATA_V definida anteriormente presenta los datos XML junto con su información de transferencia relacionada como una única vista relacional fácil de leer.

Visualización de datos XML en una estructura relacional
Conclusión
¡Su interfaz de importación basada en XML ya está operativa! Puede descargar nuestra muestra y utilizarla como plantilla de partida.
Muchos proyectos han adoptado este enfoque: los desarrolladores informan de un aumento significativo de la productividad gracias al uso del soporte integrado de KeepTool para bases de datos XML.
En la próxima entrega, veremos cómo crear una interfaz de exportación de datos complementaria, gestionando las relaciones maestro/detalle y la salida XML.
➡️ Pruebe KeepTool gratis
Las herramientas Oracle de KeepTool están diseñadas específicamente para desarrolladores, administradores de bases de datos (DBA) y equipos de soporte. Con más de 25 años de experiencia, optimizamos continuamente nuestro software para que el análisis y la documentación de sus bases de datos sean más rápidos, eficientes y claros.