Saltar al contenido principal

XML a Tabla

Configuración actual de la tarea XML a Tabla en el Diseñador de Flujos de Trabajo
  • Tipo de tarea: xml-a-tabla

La tarea XML a Tabla permite importar datos de un archivo XML con estructura tabular e insertarlos en una tabla de una base de datos. Su función es doble: se conecta a una base de datos para escribir físicamente los datos y, al mismo tiempo, expone los datos importados como un Dataset para su uso por parte de tareas posteriores en el Workflow (como un Iterador). Esta tarea trabaja con un XML de entrada proporcionado por una tarea previa (ej. Importar Texto).

1. Conexión a base de datos

En esta pestaña se configuran todos los parámetros para establecer la conexión a la base de datos de destino.

Tabla objetivo

Es posible definir el origen de las credenciales para la conexión:

  • Manual: permite la inserción manual de todos los datos de la conexión y de la tabla en los campos subyacentes.
  • Entorno: permite el uso de un entorno de conexión preconfigurada. Seleccionándolo, los campos de autenticación se completan automáticamente.

Tipo de Base de Datos

Selecciona el tipo de base de datos (DBMS) a la que conectarse. Las opciones soportadas incluyen:

  • PostgreSQL
  • SQL Server
  • MySQL
  • Oracle DB (usando Oracle se puede elegir entre SID y SERVICE)
  • SAP HANA

Conexión SSL

Indica si la conexión a la base de datos debe realizarse a través de un canal seguro.

Autenticación

CampoDescripción
HostDirección del base de datos externo autorizado.
PuertoPuerto previsto para la conexión al base de datos externo.
Nombre DBNombre del base de datos a la que conectarse.
UsuarioNombre de usuario para acceder al base de datos.
Establecer ContraseñaAbre una ventana para insertar la contraseña de forma segura.

Gestión de tabla

Define cómo debe interactuar la tarea con la tabla física en la base de datos.

  1. Tabla objetivo: determina la acción que se debe ejecutar en la tabla:
  • Crear tabla: crea siempre una nueva tabla. La operación falla si existe ya una tabla con el mismo nombre.
  • Crear tabla si no existe: crea una nueva tabla solo si no existe ya una tabla con el mismo nombre.
  • Tabla existente: inserta los datos en una tabla ya presente. Por defecto, los nuevos datos se añaden a los ya presentes (Anexar). Activando la casilla Truncar Insert, la tabla se vacía antes de insertar los nuevos datos.
  1. Nombre de tabla objetivo: nombre de la tabla que se debe crear o en la que se deben escribir los datos (ej. utenti, prodotti, log_eventi).

2. Estructura tabular

La pestaña Estructura tabular permite definir los campos (columnas) de la tabla y mapear cada columna con los elementos del archivo XML de origen.

Campos disponibles

Cada fila representa una columna de la tabla. Para cada campo es posible configurar:

CampoDescripción
TipoTipo de dato del campo. Valores disponibles: NUMERICO, STRINGA, DATA, FECHA Y HORA
PrecisiónPara NUMERICO: número máximo de dígitos; para STRINGA: longitud máxima
AliasNombre efectivo de la columna en la tabla de la base de datos. Será este el nombre visible en el DB.
Expresión JSONPathExpresión JSONPath para extraer el valor del archivo XML de origen (ej. $.persona.info.name)

Gestión de Estructura de Tabla

En la parte inferior derecha de la Estructura tabular se encuentran tres botones:

BotónAcción
GuardarGuarda la estructura definida
ImportarImporta una estructura existente
ExportarExporta la estructura definida

Esta funcionalidad permite guardar, exportar o reutilizar las mapeaturas, evitando la compilación manual de los campos y reduciendo el riesgo de errores.

Nota Técnica

  • Visibilidad: Las estructuras guardadas en el sistema son visibles exclusivamente al usuario que las ha creado.
  • Profundización: Para una descripción detallada de todas las opciones y la lógica de funcionamiento, haga referencia a la página Estructura de la tabla.

3. Ejemplo de configuración

Para crear una tabla utenti con los siguientes campos:

TipoAliasExpresión JSONPath
STRINGAname$.user.info.name
STRINGAemail$.user.info.email
NUMÉRICOage$.user.info.age
STRINGAcity$.address.city
FECHAregistration_date$.registration.date
FECHA Y HORAregistration_datetime$.registration.datetime

El resultado de esta configuración será la creación de una tabla en la base de datos con las columnas name, email, age, city, registration_date y registration_datetime (Alias) pobladas con los valores extraídos del XML (Expresión JSONPath).

Alias con caracteres especiales o mayúsculas

Si se quieren usar letras mayúsculas, caracteres especiales o espacios en los nombres de las columnas, es necesario encerrar el Alias entre comillas dobles (ej. "Nombre de Usuario").

TipoAliasExpresión JSONPath
STRINGA“Name”$.name
STRINGA“Surname”$.surname

Resultado en la Base de Datos

4. Gestión de Estructuras XML Anidadas

La tarea XML a Tabla es capaz de gestionar archivos XML que contienen elementos anidados, es decir, una jerarquía de datos dentro del registro principal. En lugar de requerir la creación de tablas separadas (normalización), la tarea puede serializar todo el bloque de datos anidado en una única columna de texto, típicamente en formato JSON.

Ejemplo Práctico

Configuración del Tarea XML a Tabla

Consideremos el siguiente archivo XML de entrada, donde cada <person> tiene una lista anidada de <departments>:

<people>
<person>
<name>Luca</name>
<surname>Rossi</surname>
<departments>
<department>Marketing</department>
<department>Sales</department>
</departments>
</person>
<person>
<name>Maria</name>
<surname>Bianchi</surname>
<departments>
<department>HR</department>
</departments>
</person>
...
</people>

El objetivo es mapear cada <person> a una fila de la tabla, preservando la lista de departamentos asociados a cada persona.

Configuración en la "Estructura Tabular"

Para obtener este resultado, la configuración en la pestaña "Estructura tabular" será la siguiente:

TipoPrecisiónAliasExpresión JSONPath
String1000name$.name
String1000surname$.surname
String4000departments$.departments

Explicación:

  1. Las columnas name y surname se mapean directamente, ya que sus valores son elementos simples (<name>, <surname>).
  2. Para la columna departments, la Expresión se establece en departments. Esto indica a la Tarea que no busque un único valor, sino que tome todo el contenido de la etiqueta <departments> para cada persona.
  3. La Tarea convierte automáticamente este fragmento XML en su equivalente JSON antes de insertarlo en la columna de la base de datos.

Resultado en la Base de Datos

Aplicando esta configuración, la Tarea producirá una tabla en la que la columna departments contiene una cadena JSON que representa la estructura anidada original. Esto permite conservar toda la información jerárquica en un solo campo de texto, listo para ser eventualmente analizado por otras herramientas o Tareas.

Extracción de Subelementos con JSONPath

Si en cambio se quisiera extraer elementos anidados individuales, como por ejemplo los nombres de los departamentos, es posible utilizar una Expresión JSONPath específica. Por ejemplo:

TipoPrecisiónAliasExpresión JSONPath
String1000name$.name
String1000surname$.surname
String1000department_names$.departments.department[*].details.name

Con esta configuración, la Tarea XML a Tabla selecciona todos los valores name presentes en el array department y los inserta en la columna department_names de la base de datos, separándolos eventualmente con una coma.

Resultado en la Base de Datos

namesurnamedepartment_names
LucaRossiMarketing, Sales
MariaBianchiHR

Este enfoque permite extraer solo los datos necesarios, sin serializar todo el bloque JSON, haciendo que la tabla sea más fácilmente interrogable y utilizable en otras Tareas o informes.

5. Parámetros de Salida

Una vez que la Tarea XML a Tabla ha completado el procesamiento, expone un rico conjunto de parámetros de salida. Estos parámetros no solo proporcionan información sobre el resultado de la operación, sino que también ponen a disposición los datos procesados en varios formatos para las Tareas siguientes.

  • result: Proporciona el estado general de la ejecución de la Tarea (por ejemplo, "Success" o un mensaje de error).
  • targetTable: Devuelve el nombre de la tabla de la base de datos en la que se han insertado los datos.
  • rowCount: Indica el número total de filas que se han insertado en la tabla de destino.
  • DataExportCsv: Devuelve todo el conjunto de datos procesado, formateado como texto en formato CSV (Comma-Separated Values).
  • DataExportJson: Devuelve todo el conjunto de datos procesado, formateado como una cadena JSON.
  • Dataset: Este parámetro representa el nombre de la columna de la tabla (Por ejemplo: name). Es el parámetro más importante para conectar esta Tarea con un Iterador. Para acceder a los valores de una columna específica durante una iteración, se utiliza la sintaxis Dataset.NombreColumna.
  • DataColumn: Este parámetro permite acceder al contenido completo de una columna como una única entidad (por ejemplo, un array o una lista).
  • DataColumn.NombreColumna: Devuelve todos los valores de la columna “NombreColumna”. Por ejemplo: “Luca, Maria, Giovanni, Elena”
  • resultJson: representa el resultado de la ejecución de la tarea en formato JSON, incluyendo información general, configuraciones y detalles sobre la ejecución.

6. Ejemplo parámetro resultJson

{
"run_info": {
"status": "Completed",
"run_result": "Success"
},
"output_parameters": {
"exitStatus": "0"
}
}