Módulo 8-Actas: Error al levantar archivos csv

Estimado equipo SIU, buenos días,

Nos podrían ayudar con esta consulta respecto a la migración de las actas.
Si hace falta más información la solicito.
Les agradezco que nos orienten.

Gracias, saludos.

Karina N. Rodriguez

Departamento de Sistemas – VRE
Universidad del Salvador

---------- Forwarded message ---------
De: María del Carmen Esteva
Date: mié, 22 dic 2021 a las 9:58
Subject: Módulo 8-Actas: Error al levantar archivos csv (#773)

Buenos días, Karina:

Seteando el folio de Universitas (actual sistema de gestión) en el campo “folio_fisico”, que es el mostrado en Guarani, la subida de los archivos csv por Pentaho da el siguiente error en migrar_actas_examen:

ERROR (version 9.1.0.0-324, build 9.1.0.0-324 from 2020-09-07 05.09.05 by buildguy) : Ocurrió un error al ejecutar esta entrada de trabajo:
Couldn’t execute SQL: SELECT * FROM ext.mig_actas_examen();
ERROR: duplicate key value violates unique constraint “iu_sga_actas_folios_libro_tomo_folio_fisico”
Detail: Key (libro_tomo, folio_fisico)=(2, 131) already exists.
Where: SQL statement “INSERT INTO sga_actas_folios(id_acta,folio, folio_fisico, libro_tomo)
2021/12/20 12:50:46 - migrar_actas_examen - VALUES (_id_acta, _folio, cursor2.folio_fisico, _libro_tomo)”
PL/pgSQL function ext.mig_actas_examen() line 184 at SQL statement

Por favor, como quedamos en la reunión de ayer, consultá con la gente del SIU cuál es el motivo de este error y la forma de solucionarlo.

Aclaro que los datos subieron sin errores y el proceso finalizó con éxito moviendo:

  • el folio de Universitas al campo “folio”
  • null al campo “folio_fisico”

Hola!
viendo el mensaje de error parece ser que quisieran ingresar dos veces los valores (libro_tomo, folio_fisico)=(2, 131)


ERROR: duplicate key value violates unique constraint "iu_sga_actas_folios_libro_tomo_folio_fisico"
Detail: Key (libro_tomo, folio_fisico)=(2, 131) already exists.

Eso puede ser por un error en el csv o por que se ejecuto tal vez 2 veces el mismo csv
hay una limitación para que esos valores no sean duplicados y en el caso de como de cambiarlo luego tendríamos inconsistencia en los datos

Deberíamos revisar el csv ver tal vez si esa fila esta duplicada o ver si se esta ejecutando por segunda vez?
avísanos cualquier consulta
muchas gracias
saludos

Estimados,
Nuestro sistema de gestión anterior no maneja “tomo”, por lo que en ese campo del archivo mig_actas_examen.csv se informa siempre el valor 1 (uno).

Con respecto al comentario “se ejecuto tal vez 2 veces el mismo csv”, antes de repetir el proceso siempre restauramos el backup anterior, que en este caso incluye hasta el módulo 7-Inscripción a Exámenes.

Dado que se ofrecen a revisar el csv, adjunto los cuatro archivos generados para subir los datos del módulo 8-Actas.

Aguardo tus comentarios, muchas gracias.


csv actas.rar (384 KB)

Nuestro sistema de gestión anterior no maneja "tomo", por lo que en ese campo del archivo mig_actas_examen.csv se informa siempre el valor 1 (uno).
Es correcto. Por defecto todos los libros tienen al menos un tomo. Como Uds no manejan el concepto de tomo, siempre va a ser el tomo 1 para cada libro que migren.

Buenos días, estimado equipo SIU!

Retomo este tema, para que nos orienten en la forma de migrar los datos de los folios dentro del módulo 8-Actas, para que sean visibles desde Guaraní.

  1. La subida de los archivos csv por Pentaho finaliza correctamente moviendo en el archivo mig_actas_examen_detalle.csv:
  • el folio actual al campo “folio”
  • null al campo “folio_fisico”

De esta forma, la migración de datos no es correcta, porque el folio no se visualiza desde Guaraní.

  1. Seteando el folio actual en el campo “folio_fisico”, que es el mostrado en Guarani, la subida de los archivos csv por Pentaho da el siguiente error en migrar_actas_examen:

ERROR (version 9.1.0.0-324, build 9.1.0.0-324 from 2020-09-07 05.09.05 by buildguy) : Ocurrió un error al ejecutar esta entrada de trabajo:
Couldn’t execute SQL: SELECT * FROM ext.mig_actas_examen();
ERROR: duplicate key value violates unique constraint “iu_sga_actas_folios_libro_tomo_folio_fisico”
Detail: Key (libro_tomo, folio_fisico)=(2, 131) already exists.
Where: SQL statement “INSERT INTO sga_actas_folios(id_acta,folio, folio_fisico, libro_tomo)
2021/12/20 12:50:46 - migrar_actas_examen - VALUES (_id_acta, _folio, cursor2.folio_fisico, _libro_tomo)”
PL/pgSQL function ext.mig_actas_examen() line 184 at SQL statement

Aclaro que:

  • antes de repetir la subida de archivos siempre restauramos el backup anterior, que en este caso incluye hasta el módulo 7-Inscripción a Exámenes
  • actualmente no manejamos el concepto de “tomo”, por lo que en ese campo del archivo mig_actas_examen.csv se informa siempre el valor 1 (uno)
  • si necesitan revisar los archivos csv, los mismos fueron adjuntados el 22/12/2021

Aguardo sus comentarios.

Muchas gracias!

Saludos.

María del Carmen Esteva
Departamento de Sistemas – VRE
Universidad del Salvador

Podes enviar ese archivo con los registros donde esta el folio fisico 131?
Puede ser que ese folio fisico y libro ya existe en la base para otro acta?
Porque el folio fisico de un libro solo se permite para un acta.

Hola, buenos días!

En nuestra base de datos existe información proveniente del sistema anterior al actual, en el cual sólo se cargaban las notas de los exámenes, sin agruparlas en actas.
Por ese motivo, estamos migrando cada examen como un acta individual (de un alumno).
Por lo que decís, entiendo que ésto origina el error que reportamos: mismo libro y folio en más de un acta.
Analizaremos otra forma de generar los archivos csv.

Muchas gracias!

Ese es el problema, si en un acta real tienen 10 alumnos (1 solo folio), pero eso lo migran al sistema como 10 actas entonces alli esta el problema porque habrá 10 actas con mismo folio físico de un libro de actas.
¿No tienen forma de poder migrar el acta de examen con todos los alumnos?

Si, analizaremos la posibilidad de agrupar en un mismo acta los exámenes de la misma carrera-plan-materia-fecha-comisión y con mismo libro y folio.

Muchas gracias!

Estimado equipo SIU:

Vuelvo a molestarlos por este tema.

Modifiqué los scripts que arman los archivos csv para informar los exámenes de una misma carrera-plan-materia-libro-folio-fecha en el mismo acta de examen.

Se definió:
nro_libro = carreraplan_materia_libro_folio_fecha (hasta 30 caracteres)
nro_acta = carreraplanmateriafecha_libro-folio (hasta 30 caracteres)

Con esos datos, no hay errores en la subida al esquema EXT ni en los precontroles.

Pero se produce el siguiente error en mig_actas.kjb:

migrar_actas_examen - Couldn’t execute SQL: SELECT * FROM ext.mig_actas_examen();
migrar_actas_examen - ERROR: duplicate key value violates unique constraint “iu_sga_actas_folios_libro_tomo_folio_fisico”
Detail: Key (libro_tomo, folio_fisico)=(5389, 90) already exists.
Where: SQL statement “INSERT INTO sga_actas_folios(id_acta,folio, folio_fisico, libro_tomo)
migrar_actas_examen - VALUES (_id_acta, _folio, cursor2.folio_fisico, _libro_tomo)”

Verificando la información por Adminer, se obtiene:

SELECT * FROM “sga_libros_tomos” where libro_tomo = 5389;

libro_tomo libro nro_tomo cant_max_folios ultimo_acta ultimo_folio
5389 5389 1 NULL NULL NULL

SELECT * FROM “sga_libros_actas” where libro=5389;

libro nro_libro nombre descripcion fecha_activacion fecha_fin_vigencia es_libro_activo anio_academico
5389 100611_149_36_90_200725 36 10-Ingeniería NULL NULL S NULL

Los registros en los archivos son:

mig_libros_actas.csv
100611_149_36_90_200725|36|10-Ingeniería|||N|N|S||||||S|

mig_actas_examen.csv
10061114920200725_36-90|100611_149_36_90_200725|1|26|2020|JULIO-AGOSTO|Migra: 1006_11_149_25/07/2020_36_90|149|25/07/2020||104|C|

mig_actas_examen_detalle.csv
10061114920200725_36-90|100611_149_36_90_200725|0|43871635|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|44111532|6|2|3||90|||7.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43793019|6|2|3||90|||9.00|A||

… (28 alumnos en total)

No detecto cuál es la clave duplicada.

Por favor, me pueden orientar para solucionar este problema?

Muchas gracias.

Mari, te adjunto dos archivos de migración que fueron modificados en Octubre de 2021, no se si tenes la ultima version.
Por favor reemplaza esto archivos, uno de ellos es el que migra los alumnos de las actas de examen.

Y verificá si en la base ya no tenes un acta donde algun folio del acta tenga registrado el dato de libro_tomo = 5389 y folio_fisico = 90

SELECT * FROM sga_actas_folios WHERE libro_tomo = 5389 AND folio_fisico = 90;

02_mig_libros_actas.sql (2.98 KB)

04_migrar_actas_examen.sql (10.7 KB)

Estimado equipo SIU:

Por este tema, detallo las tareas realizadas:

1. Actualicé los dos archivos de migración modificados en Octubre de 2021.

02_mig_libros_actas.sql
04_migrar_actas_examen.sql

2. Hice una nueva generación de archivos.

3. Inicié la subida por Pentaho.

3.1. No hay errores en la subida al esquema EXT ni en los Precontroles.

3.2. Nuevamente se produce error en la Migración (adjunto imagen)

Todas las entradas de trabajo, incluyendo 04_migrar_actas_examen, finalizan sin errores.
El error se produce en la entrada de trabajo mig_actas_examen:

migrar_actas_examen - Couldn’t execute SQL: SELECT * FROM ext.mig_actas_examen();
migrar_actas_examen - ERROR: duplicate key value violates unique constraint “iu_sga_actas_folios_libro_tomo_folio_fisico”
Detail: Key (libro_tomo, folio_fisico)=(4845, 90) already exists.
Where: SQL statement “INSERT INTO sga_actas_folios(id_acta,folio, folio_fisico, libro_tomo)
migrar_actas_examen - VALUES (_id_acta, _folio, cursor2.folio_fisico, _libro_tomo)”

4. Verificaciones por Adminer

4.1. SELECT * FROM “sga_libros_tomos” where libro_tomo = 4845;

libro_tomo libro nro_tomo cant_max_folios ultimo_acta ultimo_folio
4845 4845 1 NULL NULL NULL

4.2. SELECT * FROM “sga_libros_actas” where libro=4845;

libro nro_libro nombre descripcion fecha_activacion fecha_fin_vigencia es_libro_activo anio_academico
4845 100611_149_36_90_200725 36 Ingeniería en Informática NULL NULL S NULL

4.3. La consulta indicada en la respuesta anterior, no arroja registros:

SELECT * FROM sga_actas_folios WHERE libro_tomo = 4845 AND folio_fisico = 90;

No existen registros.

5. Identificación de los registros en los archivos

5.1. mig_libros_actas.csv
100611_149_36_90_200725|36|Ingeniería en Informática|||N|N|S||||||S|

5.2. mig_actas_examen.csv
10061114920200725_36-90|100611_149_36_90_200725|1|26|2020|JULIO-AGOSTO|Migra: 1006_11_149_25/07/2020_36_90|149|25/07/2020||104|C|

5.3. mig_actas_examen_detalle.csv
10061114920200725_36-90|100611_149_36_90_200725|0|41067689|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|41200579|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|41316822|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|41586705|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|42120395|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|42194918|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|42950960|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|42951288|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43022280|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43092692|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43106314|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43300374|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43470086|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43745412|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43793019|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43871635|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43872630|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43873502|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43916268|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|43988546|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|44002217|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|44095277|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|44097864|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|44111532|6|2|3||90|||7.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|44161561|6|2|3||90|||8.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|44183762|6|2|3||90|||9.00|A||
10061114920200725_36-90|100611_149_36_90_200725|0|44298560|6|2|3||90|||9.00|A||

Sigo sin detectar cuál es la clave duplicada.

Por favor, me pueden orientar para solucionar este problema?

Muchas gracias!

Mari


8-Actas_Error.jpg

8-Actas_Error.png

Hola Mari, para no seguir dando vueltas con el mismo error y poder migrar, hagan lo siguiente:

  1. Borrar el índice unico de folio fisico:
DROP INDEX IF EXISTS iu_sga_actas_folios_libro_tomo_folio_fisico;
  1. Migrar actas

  2. Verificar que actas quedaron con el mismo folio fisico:

SELECT * FROM sga_actas_folios 
WHERE (libro_tomo, folio_fisico) IN (SELECT libro_tomo, folio_fisico FROM sga_actas_folios GROUP BY 1,2 HAVING COUNT(*) > 1)

  1. Resolver esos registros, porque no deberia haber un mas de un folio del mismo acta o diferentes actas con mismo libro_tomo y folio_fisico.

  2. Crear nuevamente el indice unico:

CREATE UNIQUE INDEX iu_sga_actas_folios_libro_tomo_folio_fisico ON sga_actas_folios (libro_tomo,folio_fisico);

2

Estimado equipo SIU:

Finalmente, con sus consejos, pude migrar las actas de examen con sus folios.

Muchas gracias por su ayuda!

Volviste a crear el indice? Identificaste registros de folios duplicados?

Si, identifiqué los registros con folios duplicados.

Correspondían a un acta de examen con más de 26 alumnos, que al migrarla intentaba generar los folios 1 y 2 con igual libro_tomo y folio_fisico:

id_acta folio libro_tomo folio_fisico
9516 1 4845 90
9516 2 4845 90

Como tuve que ajustar datos y regenerar las mesas de examen (desde módulo 4-Calendario Académico), restauré un backup en el cual el índice no había sido eliminado.

Entonces el problema estaba en los datos del archivo csv ya que indicaban el mismo folio fisico a los 26 alumnos o en el script de migración?

En el archivo de actas de examen, mig_actas_examen.csv existe el campo renglones_folio, que indica la cantidad de alumnos que entran en cada folio del acta. Si en este campo colocaron el valor 25, entonces en el archivo de alumnos de actas de examen mig_actas_examen_detalle.csv, si registran folio fisico, este debe coincidir con lo definido en el otro archivo, es decir que no debe haber mas de 25 alumnos por cada número de folio fisico.

El error estaba en la información existente en la base de datos, que fue corregida.

Para la Usal, renglones_folio = 26, pero existía un acta con 28 alumnos, todos con mismo libro y folio.