Herramienta gratuita
Generador de SQL upsert / MERGE
Cada destino escribe «insertar o actualizar» de forma distinta, y casi todas las diferencias muerden a las 3 de la mañana: un MERGE que falla por filas duplicadas en el origen, un ON CONFLICT sin índice que lo respalde, un DELETE en Redshift que deja filas fantasma. Elige el destino, nombra tu tabla, clave y columnas, y obtén la sentencia correcta para ese motor.
Las sentencias salen de los perfiles de carga que Datrise usa para aterrizar entidades de CRM en cada destino, incluida la guarda por marca de agua que impide que una fila antigua sobrescriba una más nueva. Nada de lo que escribes sale del navegador; el enlace para compartir codifica el formulario en la URL.
Genera la sentencia
Sentencia · INSERT … ON CONFLICT DO UPDATE
INSERT INTO "deals" ("id", "name", "stage", "amount", "owner_id", "updated_at")
SELECT "id", "name", "stage", "amount", "owner_id", "updated_at"
FROM "deals_staging"
ON CONFLICT ("id") DO UPDATE SET
"name" = EXCLUDED."name",
"stage" = EXCLUDED."stage",
"amount" = EXCLUDED."amount",
"owner_id" = EXCLUDED."owner_id",
"updated_at" = EXCLUDED."updated_at"
WHERE "deals"."updated_at" IS NULL
OR "deals"."updated_at" < EXCLUDED."updated_at";Cómo hace el upsert cada destino
| Destino | Sentencia | Mecánica |
|---|---|---|
| PostgreSQLSintaxis y trampas | INSERT … ON CONFLICT DO UPDATE | una marca de agua sobre el updated-at de cada entidad, aplicada con INSERT … ON CONFLICT DO UPDATE |
| MySQLSintaxis y trampas | INSERT … ON DUPLICATE KEY UPDATE | una marca de agua sobre updated-at, aplicada con INSERT … ON DUPLICATE KEY UPDATE |
| Microsoft SQL ServerSintaxis y trampas | MERGE … WITH (HOLDLOCK) | una marca de agua sobre updated-at, aplicada con una sentencia MERGE |
| Oracle DatabaseSintaxis y trampas | MERGE INTO … USING | una marca de agua sobre updated-at, aplicada con MERGE INTO |
| SnowflakeSintaxis y trampas | MERGE INTO … QUALIFY-deduped USING | cargas en staging fusionadas por id estable con MERGE, de modo que los créditos escalan con el volumen de cambios, no con el tamaño de la tabla |
| Google BigQuerySintaxis y trampas | MERGE with partition-pruned target | añade a una tabla de staging y luego hace MERGE por id estable sobre la tabla particionada de destino |
| Amazon RedshiftSintaxis y trampas | DELETE … USING + INSERT (staging pattern) | COPY desde archivos en staging y luego un merge de borrar-e-insertar por id estable |
| Databricks SQL WarehouseSintaxis y trampas | Delta Lake MERGE INTO | un MERGE de Delta por id estable, con historial de cambios disponible vía time travel |
| ClickHouseSintaxis y trampas | INSERT into ReplacingMergeTree + FINAL | inserta en un ReplacingMergeTree con clave de id estable, de modo que la última versión gana en el merge |
| DuckDBSintaxis y trampas | INSERT OR REPLACE / ON CONFLICT DO UPDATE | reescribe las entidades cambiadas en la base local (o en Parquet) en cada ejecución |
| Amazon AthenaSintaxis y trampas | MERGE INTO (Iceberg table, engine v3) | escribe nuevas particiones Parquet y las registra en el Glue Data Catalog |
| Amazon S3 Data LakeSintaxis y trampas | append partition + latest-version view | escribe nuevas particiones por fecha y compacta archivos pequeños de forma programada |
| Azure Data Lake StorageSintaxis y trampas | append partition + latest-version view | escribe nuevas particiones por fecha en el contenedor y compacta de forma programada |
| Azure SynapseSintaxis y trampas | MERGE (dedicated SQL pool) | COPY a staging y luego un MERGE por id estable |
| AirtableSintaxis y trampas | PATCH /records with performUpsert | upserts de registros emparejados por un campo de id estable |
| MongoDBSintaxis y trampas | bulkWrite updateOne { upsert: true } | upserts por id estable con updateOne(upsert) sobre la clave primaria de origen |
| SupabaseSintaxis y trampas | INSERT … ON CONFLICT DO UPDATE | una marca de agua sobre updated-at, aplicada con INSERT … ON CONFLICT DO UPDATE |
| NeonSintaxis y trampas | INSERT … ON CONFLICT DO UPDATE | una marca de agua sobre updated-at, aplicada con INSERT … ON CONFLICT DO UPDATE |
| PlanetScaleSintaxis y trampas | INSERT … ON DUPLICATE KEY UPDATE | una marca de agua sobre updated-at, aplicada con INSERT … ON DUPLICATE KEY UPDATE |
| Amazon DynamoDBSintaxis y trampas | PutItem with ConditionExpression | PutItem/UpdateItem con una clave de partición derivada del id de la entidad |
Sáltate escribir el merge
Datrise aterriza entidades de CRM y SaaS en cada destino de arriba con esta misma mecánica, una marca de agua sobre updated-at y columnas tipadas, así que la sentencia que acabas de generar es la que corre por ti. Únete a la lista de espera para acceso anticipado.
Explorar el catálogo de integraciones