Acciones de tablas de BD: Configuración
Cuando se asignan datos a una tabla de BD, junto a esta encontrará el botón Acciones de BD. En la imagen siguiente se ve una asignación de datos a dos tablas de BD, y cada tabla tiene su propio botón Acciones de BD (rodeado de un círculo rojo en la imagen siguiente).
Al hacer clic en el botón Acciones de BD, se abre el cuadro de diálogo Acciones de tabla de BD (ver a continuación), en el que puede configurar varias acciones y opciones. El cuadro de diálogo Acciones de tablas de BD consiste en cinco partes:
1.Acciones que se deben ejecutar antes que las acciones definidas para cada registro
2.Acciones definidas para cada registro
3.Configuración de transacciones de BD
4.Configuración del seguimiento y del registro de errores
5.Configuración de la transferencia por lotes
Para ver más informaciones sobre cada parte del cuadro de diálogo, sigue leyendo.
Ejecutar una instrucción SQL antes del primer registro
En este apartado puede definir instrucciones SQL que se ejecutarán antes que las acciones definidas en el apartado Acciones que se deben ejecutar para cada registro. Estas son las opciones disponibles:
•La opción Ninguno/a significa que no se realizará ninguna acción. Esta es la configuración predeterminada.
•La opción DELETE (eliminar) todos los registros eliminará todos los registros de la tabla secundaria. Además, también puede decidir eliminar todos los registros en todas las tablas secundarias (la casilla eliminar también todos los registros en todas las tablas secundarias).
•La configuración Instrucción SQL personalizada permite escribir una instrucción personalizada que afecte a toda la tabla. Por ejemplo, puede agregar una instrucción que dará información del seguimiento sobre una asignación. Tenga en cuenta que podrá o no incluir varias instrucciones SQL en una misma consulta dependiendo de la BD, del método de conexión y del driver que use.
Para más información sobre astas acciones, consulte Acciones de tablas de BD: Escenarios.
Acciones que se deben ejecutar para cada registro
El apartado Acciones que se deben ejecutar para cada registro permite definir acciones de BD que se ejecutarán para cada registro en su base de datos. Para gestionar las acciones de la tabla, haga clic en los botones Anexar acción, Insertar acción o Eliminar acción. Si es necesario, también se pueden definir acciones múltiples. Cualquier acción que se defina después de la primera acción Insertar todo o Insertar restantes no se ejecutará nunca porque las condiciones siguientes no se pueden cumplir. Si se ha agregado una acción de tabla después de la acción Insertar todo o Insertar restantes, aparece un cuadro de diálogo informando de que se eliminará la acción de tabla posterior.
Para cada acción se comparan todos los datos de entrada con los de la BD. Si no se encuentra ninguna diferencia, se ejecutará una acción específica. Las acciones de tabla definidas se procesan de izquierda a derecha. Por ejemplo, si ha definido primero una condición Actualizar si y luego una condición Insertar restantes, la acción Actualizar si se procesará primero. Si no se cumple la condición Actualizar si, pues se ejecutará la acción Insertar restantes. Si no se cumple ninguna condición, no se ejecutará ninguna acción.
valor asignado/generado por la BD/max() + 1
Al configurar las acciones Insertar todo o Insertar restantes, puede elegir cómo se deben generar los valores. Estas son las opciones disponibles: valor asignado, generado por la BD y max() + 1. La opción valor asignado permite asignar los datos de origen al campo de base de datos directamente. Se trata de la opción estándar para todos los campos de BD.
Al configurar el incremento automático para la(s) clave(s) primaria(s) en su base de datos, puede elegir si prefiere trabajar con un valor asignado o un valor generado por la BD. Si no se ha habilitado el incremento automático, puede elegir entre un valor asignado y la opción max() + 1. La opción max() + 1 genera valores numéricos a partir de los valores que ya existen en la base de datos. Por ejemplo, si la tabla tiene tres registros con claves principales 1, 2 y 3, entonces la clave primaria del registro nuevo será 4.
NULL equal
Si marca la casilla NULL equal junto a un registro (ver imagen siguiente), los valores NULL en el elemento de origen y de destino se considerarán iguales. No marcar esta casilla puede llevar a resultados incorrectos. Puede marcar la casilla NULL equal si se cumplen todas estas condiciones:
•El campo para el que desea activar la opción NULL equal acepta valores NULL. Esto significa que este campo se ha configurado de tal forma que se pueden introducir valores NULL.
•Se han configurado una o varias de las acciones siguientes: Omitir si, Actualizar si o Eliminar si.
•Una o varias acciones de la tabla (como Omitir si) tienen al menos una condición es igual o es igual (omitir may/min) (ver el campo Author en la imagen siguiente).
La imagen anterior muestra que se han configurado dos acciones para la tabla Authors: Omitir si e Insertar restantes. La condición Omitir si compara los valores Author y Website del origen con los de la BD. Si estos valores son iguales, estos registros se omitirán en la BD, y los registros de origen que no tengan equivalente en la BD simplemente se insertarán en ella.
La opción NULL equal se ha habilitado para la columna Página web. Por ejemplo, uno de los registros Author tiene un valor NULL en el campo Website, tanto en el registro de origen como de destino. Si la opción NULL equal está habilitada, se omitirá este registro Author y no se insertará en la base de datos. Sin embargo, si no se ha marcado la casilla NULL equal, el registro ya no cumplirá la condición Omitir si y se insertará en la BD.
Tablas secundarias
Si en su base de datos hay registros vinculados por una relación de clave foránea, podrá ver los nombres de tablas secundarias en el cuadro de diálogo Acciones de tablas de BD (Books en el cuadro de diálogo Acciones de tablas de BD anterior). Aparecerán las siguientes opciones:
•Eliminar datos en tablas secundarias: Esta opción puede resultar muy útil cuando configura, por ejemplo, la acción Actualizar si para una tabla principal y la acción Insertar todo para su tabla secundaria. Si habilita la condición Actualizar si, se actualizarán sólo los registros que existen tanto en el origen como en la base de datos. Gracias a la condición Actualizar si, puede evitar registros duplicados en la tabla principal.
La opción Eliminar datos en tablas secundarias borrará sólo aquellos registros Book cuyos registros principales (Authors) cumplan la condición Actualizar si (es decir que existen en el origen y en la BD). Puede evitar registros duplicados o huérfanos en la tabla secundaria eliminando registros secundarios. La acción Insertar todo definida para la tabla secundaria insertará sólo aquellos registros secundarios de origen cuyos registros principales cumplan la condición Actualizar si.
•Omitir datos secundarios de entrada: Esta opción es útil cuando quiere actualizar solamente una tabla principal sin cambiar sus registros secundarios.
Gestión de transacciones de BD
El apartado Gestión de transacciones de BD le permite revertir una operación a una secuencia de operaciones (transacción) cuando ocurren errores relacionados a la BD (p.ej., si se insertan valores NULL en columnas no-NULL). Para habilitar las transacciones a nivel de acciones de tabla marque la casilla Usar transacciones en el cuadro de diálogo Acciones de tabla de BD (ver imagen siguiente).
Existen varias opciones de gestión de transacciones:
•Revertir transacción de nivel superior y detener la operación: Puesto que la gestión de transacciones se puede configurar a distintos niveles de la jerarquía, la transacción de nivel superior puede hacer referencia a (i) la transacción a nivel de componente de BD, si es que se han habilitado a ese nivel, o (ii) la transacción definida la tabla de nivel más alto en la jerarquía. Los cambios que se han realizado en la BD se revertirá en cada nivel de la jerarquía hasta el nivel superior, y luego se detendrá la ejecución.
•Revertir transacción de nivel superior y continuar: Ocurre lo mismo, pero la asignación sigue ejecutándose después de la reversión de la transacción (p.ej., para procesar otro componente de destino si existe).
•Revertir transacción actual y detener la operación: Si ocurre un error relacionado con la BD, se revertirán únicamente los cambios contenidos en la transacción actual, y se detiene el procesamiento de los siguientes registros. Los cambios realizados previamente fuera de la transacción actual se conservan.
•Revertir transacción actual y continuar la operación: Ocurre lo mismo, pero la asignación sigue ejecutándose después de la reversión de la transacción.
Para más información sobre varios casos de gestión de transacciones, consulte el apartado Reversión de transacciones: Casos.
Seguimiento
Cuando una asignación escribe datos en una BD se puede habilitar el seguimiento de BD y el registro de errores. El seguimiento es útil para monitorizar todos los cambios que la asignación ha hecho en la base de datos durante la ejecución de la asignación. Los cambios que se han realizado en la BD se almacenan en un archivo de seguimiento. Si ocurren errores durante la ejecución, estos también se almacenan.
Para más información sobre la estructura de un informe de seguimiento, consulte el apartado Archivo de seguimiento. Para ver un ejemplo en el que se ha habilitado el seguimiento, consulte el primer caso en el apartado Reversión de transacciones: Casos.
Para habilitar el seguimiento a nivel de tabla, siga estos pasos:
1.Asegúrese de que el nivel de seguimiento a nivel de componentes de DB se ha configurado en Siempre o Error.
2.Haga clic en el botón Acción de tabla junto a la tabla para la que quiere habilitar el seguimiento.
3.Seleccione uno de los siguientes niveles de seguimiento en la sección Seguimiento de las acciones de tabla de BD (imagen siguiente): (i) la opción Siempre deshabilitado significa que no se hará ningún seguimiento para esa tabla; (ii) la opción Limitar a los errores restringe el seguimiento a los errores solamente; (iii) la opción Usar configuración del componente hereda la configuración que se definió a nivel del componente.
Seguimiento a nivel de campo de la base de datos
Cuando se habilita el seguimiento a nivel de componente de BD y a nivel de tabla, todos los campos (columnas de BD) se incluyen automáticamente en el informe de seguimiento (ver imagen siguiente). Si quiere que el informe de seguimiento incluya únicamente información de seguimiento sobre campos de BD específicos, haga clic en el botón Campos del cuadro de diálogo Acciones de tabla de BD. Puede decidir ocultar campos, incluirlos siempre o sólo en caso de error.
Usar transferencia por lotes
La opción Transferencia por lotes permite ejecutar varias instrucciones INSERT en una consulta. El uso de esta opción acelera considerablemente el proceso de inserción, ya que sólo es necesario ejecutar una instrucción en lugar de muchas. La opción Transferencia por lotes se configura en MapForce, pero la transferencia por lotes de los datos realmente ocurre cuando se ejecuta una asignación de datos en MapForce Server.
Requisitos
La opción de la transferencia por lotes solamente es compatible si se cumplen estas dos condiciones:
•El lenguaje de la asignación de transformación es el motor de ejecución integrado (BUILT-IN).
•La asignación de datos se ejecuta en MapForce Server (independientemente o bajo control de FlowForce Server).
•La licencia de MapForce Server no está limitada a la ejecución por subprocesos simples en un equipo con varios núcleos. Es decir que la opción Limit to single thread execution (limitar a la ejecución por subprocesos simples) en la pestaña Server Management de Altova LicenseServer se debe deshabilitar.
•La acción Insertar todo se configura para la tabla de BD en cuestión.
•La tabla a la que quiere transferir datos con la inserción masiva, no puede tener ni tablas o vistas relacionadas ni procedimientos almacenados que hagan referencia a ella en la asignación.
•El controlador de BD es compatible con la operación inserción masiva en condiciones WHERE.
La compatibilidad de la operación Inserción masiva depende del tipo y del controlador de BD que se usa (ver siguiente tabla).
Tipo de BD | ADO | ODBC | JDBC | ADO.NET | Nativo |
---|---|---|---|---|---|
Acceso | No | No | n/a | n/a | n/a |
DB2 | No | Sí | Sí | Sí | n/a |
Firebird | n/a | Sí | Sí | No | n/a |
Informix | No | Sí | Sí | Sí | n/a |
iSeries | No | Sí | Sí | Sí | n/a |
MariaDB | No | Sí | Sí | No | n/a |
MySQL | n/a | Sí (se requiere MySQL Versión 5 o superior) | Sí | No | n/a |
Oracle | No | Sí | Sí | Sí | n/a |
PostgreSQL | n/a | Sí | Sí | n/a | Sí |
Progreso | n/a | Sí | Sí | n/a | n/a |
Servidor SQL | Sí | Sí | Sí | Sí | n/a |
SQLite | n/a | n/a | n/a | n/a | No |
Sybase | No | Sí | Sí | n/a | n/a |
Teradata | n/a | Sí | Sí | n/a | n/a |
Nota: | Para habilitar la compatibilidad de la inserción masiva con MySQL y MariaDB a través de JDBC, use la opción de conexión rewriteBatchedStatements=true. |
BD de muestra
Para probar la operación de la inserción masiva, puede usar el servidor SQL y la base de datos AdventureWorks. Cuando carga esta base de datos en su asignación y abre el cuadro de diálogo Acciones de tablas de BD, podrá especificar el tamaño de lote (en nuestro ejemplo es de 1000 registros). El tamaño de lote define el numero de registros que se podrán insertar a la vez. Es importante tener en cuenta que las opciones Transferencia por lotes y Transacciones se excluyen mutuamente: Al habilitar una de estas opciones, la otra se desactiva automáticamente.
Siguiente paso
Ahora que hemos habilitado la opción Inserción masiva, podremos ejecutar la asignación en MapForce Server (independientemente o bajo control de FlowForce Server).