MapForce ofrece soporte para la operación "merge" de SQL cuando esta es la herramienta adecuada para la tarea
Las tablas de bases de datos de gran tamaño pueden contener fácilmente un millón, e incluso cientos de millones, de filas de datos. Los administradores de bases de datos y otros responsables del mantenimiento de estos conjuntos de datos masivos siempre están preocupados por el tiempo de ejecución de las operaciones de ETL (extracción, transformación y carga), las actualizaciones y otras consultas SQL. Para hacer que estas operaciones sean más eficientes, algunos, aunque no todos, los proveedores de bases de datos implementaron una instrucción SQL de "merge" (combinación) para insertar o actualizar filas de una tabla existente como una única operación de inserción masiva, en lugar de requerir instrucciones individuales para cada fila.
Altova MapForce admite automáticamente la función de combinación SQL cuando esta está disponible para la base de datos de destino. Veamos un ejemplo.

Insertar vs. Actualizar: Si..
La imagen que se muestra a continuación ilustra un mapeo de datos que relaciona elementos de un archivo XML con una tabla de una base de datos.

Por defecto, MapForce genera una instrucción SQL de inserción para cada elemento "Persona" en el archivo de origen, lo cual es adecuado para poblar las filas de una tabla de base de datos nueva y vacía. Sin embargo, en otras situaciones, como la sincronización de una copia de seguridad con un conjunto de datos activo, las instrucciones de inserción no son apropiadas. MapForce le permite especificar de forma sencilla la operación SQL correcta que necesita para cada mapeo de base de datos.
Simplemente haga clic en el icono de "Acción" que se encuentra junto a la tabla de la base de datos que desea modificar, que en el ejemplo anterior es la tabla "Person". Esto abrirá el cuadro de diálogo "Acciones de la tabla de base de datos de MapForce". La captura de pantalla que se muestra a continuación ilustra la función desplegable que le permite cambiar la instrucción SQL de "Insertar" a "Actualizar si existe".

Actualización: Si se requiere establecer una condición. En esta configuración, queremos actualizar los registros en la base de datos donde los datos de origen incluyan una clave primaria existente. Además, queremos insertar una nueva fila cuando la clave primaria en los datos de origen no exista ya en la base de datos.
Esta operación se conoce comúnmente como una actualización condicional: "Si... entonces, actualiza".
El cuadro de diálogo "Acciones de la tabla de la base de datos" nos permite definir la condición que se debe verificar para realizar una actualización, y una acción alternativa que se ejecutará cuando la condición sea falsa. El conjunto completo de acciones que definen "Actualizar si... Insertar lo demás" se muestra aquí:

Actualización frente a fusión masiva
Hasta ahora, ni siquiera hemos mencionado el proveedor de la base de datos para la tabla de destino de nuestro mapeo. Esto se debe a que el mapeo se define de la misma manera para todas las bases de datos populares compatibles con MapForce. No necesitamos hacer nada diferente, ya sea que la base de datos de destino admita o no la función de combinación SQL.
Cuando hacemos clic en la pestaña "Salida de MapForce" que se encuentra debajo del diseño de mapeo de la base de datos, MapForce genera un script SQL personalizado para el tipo de base de datos específico. Este script se muestra entonces en la ventana de salida de MapForce para su revisión. No se ejecuta automáticamente.
Si la base de datos de destino admite la instrucción SQL MERGE, verá una instrucción MERGE cerca del principio del script.

Si la base de datos de destino no admite la instrucción SQL MERGE, verá sentencias individuales de UPDATE...WHERE para cada fila de los datos de origen.

Puede ejecutar el script directamente en MapForce seleccionando la opción "Ejecutar script SQL" en el menú de salida de MapForce, o puede guardar la transformación como un archivo de ejecución y automatizarla en MapForce Server, especificando los nombres de los archivos de entrada en tiempo de ejecución.
Si la base de datos de destino implementa SQL Merge, se generarán sentencias de combinación, independientemente de si el mapeo se ejecuta directamente mediante MapForce o se automatiza a través de MapForce Server. MapForce 2017 admite sentencias SQL Merge para SQL Server 2008 y versiones posteriores, Oracle, IBM DB2 y Firebird.
Las pruebas realizadas aquí en Altova indican que la ejecución masiva de SQL Merge mediante MapForce Server puede ser hasta 15 veces más eficiente que las técnicas anteriores.*
*Nota: Se ha mantenido el asterisco al final de la frase, asumiendo que indica una nota al pie o una aclaración adicional
Haga clic aquí para obtener más información sobre el mapeo de bases de datos con MapForce, incluyendo una lista completa de las bases de datos compatibles como fuentes o destinos para el mapeo de datos, o haga clic aquí para descargar una versión de prueba gratuita y completamente funcional de 30 días. Los archivos utilizados para el mapeo en esta publicación del blog se proporcionan como ejemplos de MapForce, y las instrucciones detalladas para recrear el mapeo se encuentran en la ayuda integrada de MapForce.
- Los resultados de rendimiento se basan en pruebas internas realizadas por Altova. Sus resultados pueden variar.