es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Insertar sin crear duplicados

Cómo cargar datos únicos de una tabla en otra tabla? Por ejemplo, si tengo columnas – patient_id, npi, diagnosis_code, from_date, to_date, etc. en ambas tablas, ¿cómo puedo asegurarme de que no se cree un registro duplicado en tabla 1 cuando ocurre la inserción desde tabla 2?

En PostgreSQL, puedo crear un índice único en esas columnas, pero Snowflake no lo admite.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para evitar que se cree un registro duplicado al insertar datos de una tabla a otra en Snowflake, puedes utilizar la declaración MERGE. La declaración MERGE te permite insertar filas en una tabla si aún no existen y actualizar filas existentes si lo hacen.

    Para utilizar MERGE, deberás especificar la tabla de origen y la tabla de destino, e identificar las columnas que se utilizarán para determinar si un registro ya existe en la tabla de destino. En el ejemplo dado, puedes utilizar las columnas patient_id, npi, diagnosis_code, from_date y to_date para determinar si un registro ya existe.

    La sintaxis de la declaración MERGE se vería así:

    MERGE INTO table1 AS t1
    USING table2 AS t2
    ON t1.patient_id = t2.patient_id
       AND t1.npi = t2.npi
       AND t1.diagnosis_code = t2.diagnosis_code
       AND t1.from_date = t2.from_date
       AND t1.to_date = t2.to_date
    WHEN NOT MATCHED THEN 
      INSERT (patient_id, npi, diagnosis_code, from_date, to_date)
      VALUES (t2.patient_id, t2.npi, t2.diagnosis_code, t2.from_date, t2.to_date);
    

    Esta declaración MERGE insertará filas de table2 en table1 solo si no hay un registro idéntico basado en las columnas especificadas. Si ya existe un registro coincidente, la declaración MERGE actualizará ese registro con los valores de table2.

Comments are closed.