Realizar un upsert masivo a una base de datos en Jitterbit Studio
Introducción
Una actividad Upsert de base de datos escribe registros en una base de datos insertando nuevos y actualizando los existentes en un solo paso, basándose en uno o más campos de clave que especifiques. Como la operación maneja ambos casos juntos, puede ejecutarse repetidamente contra el mismo conjunto de datos sin crear duplicados, lo que la convierte en la opción correcta tanto para migraciones de datos iniciales como para operaciones de sincronización continua.
Si solo necesitas insertar registros nuevos, utiliza una actividad de inserción de base de datos en su lugar. Si solo necesitas actualizar registros existentes, utiliza una actividad de actualización de base de datos.
Para conjuntos de datos grandes, Studio admite fragmentación: cada fragmento de registros se confirma en la base de datos a medida que está disponible, en lugar de esperar a que se procesen todos los registros. Esto reduce el uso de memoria y puede mejorar significativamente el rendimiento. La fragmentación se cubre en Parte 3.
En esta guía se asume que ya hay una conexión de base de datos configurada en el proyecto.
Patrón de diseño
La actividad Upsert sigue el patrón de transformación:
Parte 1: Configurar la actividad Upsert de base de datos
Paso 1: Nombra la actividad y selecciona una tabla
-
En el lienzo de diseño, arrastra un tipo de actividad Upsert de una conexión de base de datos existente al lienzo.
-
Haz doble clic en la actividad para abrir su configuración.
-
Nombre: Ingresa un nombre descriptivo, como
Upsert Contacts. -
Haz clic en el icono de actualizar para cargar las tablas disponibles. Para bases de datos con un gran número de tablas, utiliza el menú desplegable Ver para filtrar por tipo o ingresa un término de búsqueda en el cuadro Búsqueda antes de actualizar.
-
En la lista Proporcionar la referencia de nombres de tabla, haz clic en la tabla de destino para seleccionarla. La tabla seleccionada aparece en el panel de la derecha.
-
Permitir truncamiento de campos de caracteres para evitar errores de longitud de campo: Deja esta casilla sin marcar si deseas que los desajustes de longitud de campo salgan a la superficie como errores. Si no está marcada y llegan datos de tamaño excesivo, la operación devuelve un estado de Error. Si está marcada, la operación devuelve Éxito con información y los registros de operación registran que uno o más valores fueron truncados.
-
Incluir el esquema/propietario en los nombres de tabla: Marca esta casilla si el mismo nombre de tabla existe en más de un esquema, para que Studio pueda distinguir entre ellos.
-
Haz clic en Siguiente.
Paso 2: Selecciona las claves upsert
-
En el panel Seleccionar claves, marca la casilla de verificación de cada campo que identifica de forma única un registro existente.
Consejo
Utiliza una clave de negocio natural (por ejemplo, una dirección de
correo electrónicoo un campoexternal_idasignado por el sistema de origen) en lugar de una clave principal generada por la base de datos. Una clave generada no se conoce hasta después de la primera inserción, por lo que no se puede usar para hacer coincidir registros en ejecuciones posteriores.Los campos seleccionados aparecen en el panel de la derecha como las claves upsert activas.
-
Haz clic en Siguiente.
Paso 3: Revisa el esquema de datos
-
Revisa el esquema de datos de destino. Este esquema se utiliza en la transformación en Parte 2.
-
Haz clic en Finalizado.
Parte 2: Asigna la transformación
-
En el lienzo de diseño, añade un paso de Transformación entre la actividad de origen y la actividad Upsert de base de datos.
-
Abre la transformación. El esquema de origen aparece a la izquierda y el esquema de destino de Upsert aparece a la derecha.
-
Cuando el esquema de destino se refleja directamente desde una única actividad Upsert, el destino incluye un nodo
rowdirectamente bajo la raíz. Studio trata automáticamente este nodo como un nodo de bucle de modo que cada registro del origen produce una fila upsert en la base de datos. -
Asigna los campos de origen a los campos de destino correspondientes bajo el nodo
row.Nota
Para destinos multitabla (unidos), los valores de los campos unidos de una tabla secundaria toman como valor predeterminado los valores de los campos de la tabla principal correspondientes. Los campos unidos de la tabla secundaria no se pueden asignar directamente en la transformación.
Para obtener un recorrido completo de la asignación de transformación, consulta Descripción general de la asignación de transformación.
Parte 3: Mejora el rendimiento para conjuntos de datos grandes
De manera predeterminada, Studio acumula todos los registros procesados y los escribe en la base de datos en una única operación. Para conjuntos de datos grandes, habilitar la fragmentación hace que cada fragmento se confirme cuando esté disponible, lo que reduce el uso pico de memoria y puede mejorar significativamente el rendimiento.
Para habilitar la fragmentación, establece la variable de Jitterbit jitterbit.target.db.commit_chunks en true o 1. Hazlo en un paso de script que se ejecute antes de la operación upsert, o configúralo directamente en los ajustes de operación.
Para establecerlo en un script:
$jitterbit.target.db.commit_chunks = true;
Para configurar el tamaño del fragmento y habilitar la fragmentación a través de la interfaz de usuario de configuración de operación, consulta Opciones de operación.
Nota
Cuando la fragmentación está habilitada, cada fragmento se escribe en un archivo temporal antes de confirmarse en la base de datos. Asegúrate de que el agente tenga espacio en disco suficiente para los archivos temporales al procesar conjuntos de datos muy grandes.
Verifica la integración
Implementa y ejecuta la operación. Revisa los registros de operación para confirmar que la actividad Upsert se completó correctamente y verifica que el recuento de registros en la base de datos coincida con el total esperado del origen.
Si la operación devuelve un estado Error debido a desajustes de longitud de campo, selecciona Permitir truncado de campos de caracteres en la configuración de actividad (Paso 1) o usa funciones de cadena para ajustar valores en la transformación antes de que lleguen al destino.