[SOLUCIONADO]Error al migrar personas

Gente buenas tardes, estoy teniendo un error al realizar el paso 7 de mig_Personas. Al ejecutar el trabajo me tira el siguiente error .

Detail: Ya existe la llave (pais_documento, tipo_documento, nro_documento)=(54, 90, 00343977).

Y al verificar el dato en negocio.mdp_personas_documentos si es verdad que existe… Pero en mig._cnv_pk_personas tiene los campos de la siguiente manera:

migrar = 1
existe = 0

¿Porqué puede ser que esté dando esto? ¿Qué puedo correr para actualizar mig._cnv_pk_personas?

Muchas gracias

El pre-control del modulo de Personas, no tiró ese mensaje de que ya existe el documento?

Si corres la función mig.sp_ctrl_personas() que esta en \02_Modulos\15_Personas\01_Pre_Controles\fx_ctrl_personas.sql, no salta el control?
¿Cual es la version de los scripts de migración?

Alejandro, las advertencias que me había dado ese control son las siguientes:

Error: Hay personas que tienen nacionalidad 1-Argentino y la localidad de nacimiento no es de Argentina, o es nacionalidad 1-Argentino y la localidad de nacimiento no es de Argentina.
Error: Hay registros con el campo orient_voc_rec de la tabla mig.sga_personas, que no coinciden con los datos de la tabla mdp_trabajo_orientacion_recibida
Advertencia: Hay personas con el dato CUIL (mig.sga_personas.numero_cuil) que ya existe en G3 (mdp_personas_documentos). Estos nros de CUIL/CUIT no se migrarán
Advertencia: Hay personas con el dato CUIL (mig.sga_personas.numero_cuil) con una longitud distinta de 11 caracteres. Revisar.

No menciona el error que te estoy comentando. Al ejecutar nuevamente el script que me comentás, me genera el siguiente resultado:

Advertencia: Hay personas con el dato CUIL (mig.sga_personas.numero_cuil) que ya existe en G3 (mdp_personas_documentos). Estos nros de CUIL/CUIT no se migrarán

Estoy utilizando los scripts de la versión 3.18
Saludos

Javier, en principio tenes dos errores que debes resolver, aunque no estan relacionados con el error puntual que te dio al migrar.

  1. Verifica si en G3 existe un documento con el que te dio error (¿Ese nro 00346977 esta bien?):
select * from mdp_personas_documentos where pais_documento = 54 and tipo_documento = 90 and nro_documento = '00343977' 
  1. ¿Alguna de estas querys retorna datos?
SELECT tipo_documento, nro_documento, count(*) FROM mig.sga_personas GROUP BY 1,2 HAVING COUNT(*) > 1

Advertencia: Hay personas con mismo tipo y número de documento (tipo_documento + nro_documento). Tabla sga_personas. Verifique!!!’

SELECT tipo_documento, numero_documento, count(*) FROM mig.sga_personas_doc GROUP BY 1,2 HAVING COUNT(*) > 1

Mensaje:
Advertencia: Hay personas con mismo tipo y número de documento (tipo_documento + nro_documento). Tabla sga_personas_doc. Verifique!!!

SELECT nro_documento, count(*) FROM mig.sga_personas GROUP BY 1 HAVING COUNT(*) > 1

Mensaje:
Advertencia: Hay personas con mismo “número de documento” . Tabla sga_personas. Verifique si estan bien los nros de documento de cada persona y su tipo de documento.!!!

SELECT numero_documento, count(*) FROM mig.sga_personas_doc GROUP BY 1 HAVING COUNT(*) > 1

Mensaje:
Advertencia: Hay personas con mismo “número de documento” . Tabla sga_personas_doc. Verifique si estan bien estos datos!!!’


SELECT doc.pais_documento, doc.tipo_documento, doc.numero_documento, count(*)
FROM 
(SELECT pais_documento, tipo_documento, nro_documento FROM mig.sga_personas 
  UNION ALL 
 SELECT pais_documento, tipo_documento, numero_documento FROM mig.sga_personas_doc
) as doc (pais_documento, tipo_documento, numero_documento) 
GROUP BY 1,2,3 
HAVING COUNT(*) > 1

Este control actualmente no existe, si este es el que te devuelve filas entonces aca esta el problema. Te enviaremos el script de pre-control para que reemplaces el archivo.
3

Alejandro:

1- Si existe, el tipo de documento es psaporte, seguramente el número está mal ya que la fecha de nacimiento es 1985, quizás era 1958 (ya mendé una consulta a la facultad para consultar).

2- SELECT tipo_documento, nro_documento, count() FROM mig.sga_personas GROUP BY 1,2 HAVING COUNT() > 1
Nada

SELECT tipo_documento, numero_documento, count() FROM mig.sga_personas_doc GROUP BY 1,2 HAVING COUNT() > 1
Nada

SELECT nro_documento, count() FROM mig.sga_personas GROUP BY 1 HAVING COUNT() > 1
Nada

SELECT numero_documento, count() FROM mig.sga_personas_doc GROUP BY 1 HAVING COUNT() > 1
Nada

SELECT doc.pais_documento, doc.tipo_documento, doc.numero_documento, count()
FROM
(SELECT pais_documento, tipo_documento, nro_documento FROM mig.sga_personas
UNION ALL
SELECT pais_documento, tipo_documento, numero_documento FROM mig.sga_personas_doc
) as doc (pais_documento, tipo_documento, numero_documento)
GROUP BY 1,2,3
HAVING COUNT(
) > 1

Nada

Y esta otra consulta?
Verifica si en G3 ya existe un numero de documento de los que se va a migrar:

SELECT pais_documento, tipo_documento, nro_documento FROM mdp_personas_documentos
INTERSECT
(SELECT pais_documento, tipo_documento, nro_documento 
   FROM mig.sga_personas as p
  JOIN mig._cnv_pk_personas as mp ON (mp.unidad_academica = p.unidad_academica AND mp.nro_inscripcion = p.nro_inscripcion)
  WHERE mp.migrar = 1
  UNION ALL
 SELECT pais_documento, tipo_documento, numero_documento 
   FROM mig.sga_personas_doc as p
   JOIN mig._cnv_pk_personas as mp ON (mp.unidad_academica = p.unidad_academica AND mp.nro_inscripcion = p.nro_inscripcion)
  WHERE mp.migrar = 1
)

Esta última consulta me dá 15.379 registros. Si, los DNI que me dan error en 07_mdp_personas_documentos si existen en G3.

Por la cantidad de alumnos pareciera que no es un error en algun nro de documento de un alumno.
Los alumnos de la unidad académica que vas a migrar ya existen en Guarani 3 por una migracion anterior de alumnos de otra unidad academica?
¿Como explicas que haya tantos alumnos que ya existen en la base de Guarani 3?

Es una UA que no existe en G3. Yo ejecute la migración y la misma me dió el error en el paso 7, de ahí que vengo ejecutando siempre los pasos hasta ese punto… no entiendo cómo puede haber tanta gente en G3 de esa UA.

¿No habras migrado antes esa misma base?
Son muchos registros!
Toma algunos de esos números de documentos y fijate si corresponde a las mismas personas

Alejandro, volví a empezar y ya no genera el error. Seguramente agarrré una DB que ya tenía registros.

Muchas gracias!