Buenos días!
Estamos trabajando en Guaraní 3.21.0, y necesitaríamos actualizar masivamente varios emails y números de teléfonos de personas.
Antes de ejecutar el procedimiento en ambiente TST, quisiéramos confirmar si debemos tener en cuenta alguna vinculación o tabla adicional más allá de mdp_personas_contactos.
Partiríamos de un archivo .csv con todos los datos a actualizar, y ejecutaríamos lo siguiente:
-- Crear tabla temporal
CREATE TEMP TABLE tmp_actualizaciones_contactos (
persona INTEGER,
contacto_tipo VARCHAR,
otros_contactos VARCHAR,
email VARCHAR,
telefono_codigo_area VARCHAR,
telefono_numero VARCHAR);
-- Cargar los datos desde el CSV
\copy tmp_actualizaciones_contactos FROM '/ruta/.../actualizaciones_contactos.csv' CSV HEADER;
-- Verificar los datos cargados
SELECT * FROM tmp_actualizaciones_contactos;
-- Actualizar los registros email - contacto_tipo = 'MP'
UPDATE mdp_personas_contactos m
SET
email = COALESCE(t.email, m.email)
FROM tmp_actualizaciones_contactos t
WHERE m.persona = t.persona
AND m.contacto_tipo = t.contacto_tipo
AND m.contacto_tipo = 'MP';
-- Actualizar los registros teléfono - contacto_tipo = 'C'
UPDATE mdp_personas_contactos m
SET
telefono_codigo_area = COALESCE(t.telefono_codigo_area, m.telefono_codigo_area),
telefono_numero = COALESCE(t.telefono_numero, m.telefono_numero)
FROM tmp_actualizaciones_contactos t
WHERE m.persona = t.persona
AND m.contacto_tipo = t.contacto_tipo
AND m.contacto_tipo = 'C';
¿Podrían confirmarnos si la lógica es correcta y si hay que considerar alguna otra tabla relacionada?
¡Muchas gracias!