Error con registros en paso 2

Bien día, les escribo por el siguiente tema, estamos tratando de realizar una migración desde G2 y al ejecutar el job ifx2pg, en el paso Crea Schemas fk en postgres no da error de Fk.

Verificamos que los datos estén de manera correcta en IFX y si están todas las referencias a las FK. Entonces verificamos los registros en el schema mig y nos encontramos que faltan michos registros en varias tablas.

No entendemos el porque de este comportamiento, ya que en IFX está todo bien.
Lo único que pudimos observar de raro, es que en uno de los pasos anteriores nos arroja lo siguente:

2024/03/12 09:12:38 - Table output.0 - Error inserting/updating row
2024/03/12 09:12:38 - Table output.0 - ERROR: transacción abortada, las órdenes serán ignoradas hasta el fin de bloque de transacción
2024/03/12 09:12:38 - Table output.0 - WARNING: Couldn’t insert row into table: [CSNAT], [N], [41965], [ARQ98], [37456618 ], [206], [1], [R], [N], [2012/03/29 00:00:00.000], [U], [null], [null], [null], [null], [1998], [1], [S], [N], [A]
2024/03/12 09:12:38 - Table output.0 -
2024/03/12 09:12:38 - Table output.0 - Error inserting/updating row
2024/03/12 09:12:38 - Table output.0 - ERROR: transacción abortada, las órdenes serán ignoradas hasta el fin de bloque de transacción

Así en varios registros. Lo raro es que no se frena el pasaje de datos como para verificar la tabla en donde se ignoraran estos registros.

También me aparece lo siguiente

2024/03/12 09:55:12 - Table input.0 - SQL query : SELECT *
FROM mig_examenes
2024/03/12 09:55:12 - Table output.0 - Prepared statement : INSERT INTO mig.mig_examenes (unidad_academica, sede, materia, anio_academico, turno_examen, mesa_examen, llamado, fecha_mesa, libro, escala_notas, tipo_acta, acta, carrera, legajo, plan, version, folio_historico, fecha_examen, resultado, nota, rectificado, acta_rectificada, nro_resolucion, tipo_inscripcion, procesado, error, fecha_mes_fin) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2024/03/12 09:55:22 - Table output.0 - WARNING: Couldn’t insert row into table: [CSNAT], [00000], , [2014], [8], [118], [1], [2014/08/15 00:00:00.000], [88], [1], [N], [11856], [LIC13], [24262319 ], [2013], [1], [85], [2014/08/15 00:00:00.000], [A], [9], [N], [null], [null], [R], [N], , [2014/08/31 00:00:00.000]
2024/03/12 09:55:22 - Table output.0 -
2024/03/12 09:55:22 - Table output.0 - Error inserting/updating row
2024/03/12 09:55:22 - Table output.0 - ERROR: el valor nulo en la columna «materia» de la relación «mig_examenes» viola la restricción de no nulo

Entiendo el error, pero no entiendo cómo es que llega a ser NULO el dato de materia, hago un

SELECT * FROM mig_examenes where materia isnull or materia = ‘’

y no devuelve nada.

¿Qué podemos verificar para poder seguir con la migración?

Muchas gracias

Fijate el 3er parametro lleva un valor vacio.

Proba consultar con:
SELECT * FROM mig_examenes WHERE materia IS NULL OR trim(materia) = ‘’;

Alejandro, gracias por la respuesta, la consulta que me pasaste no me devuelve registros, como ya lo había comentado en el primer post.

Si, el cambio fue el trim(materia).
Viendo nuevmente el mensaje de error, el problema no esta en la tabla mig.mig_examenes sino que esta en el archivo que tieen los datos de examenes. Y el problema se da cuando levanta los datos de ese archivo y lo inserta en la tabla mig_examenes.
Fijate el achivo con los datos a migrar, alguna fila en la columna materia tiene un espacio en blanco. Busca lo siguiente:
CSNAT,00000,2014,8

El archivo puede ser el sga_a00446.unl? si es ese, no hay cadena que sea igual a

Tenes idea que otro archivo puedo ver?

Perdon Javier, pense que era migracion desde Sistemas Externos por el nombre de la tabla mig_examenes
No encuentro esta tabla en la migraciòn desde Guarani 2.
¿En que modulo de migraciòn o que script da este error?

Si es un problema de Guarani 2, realiza esta consulta:
SELECT * FROM sga_actas_examen WHERE materia IS NULL OR trim(materia) = ‘’;
SELECT * FROM sga_mesas_examen WHERE materia IS NULL OR trim(materia) = ‘’;


¿Tienen en la base de informix de Guarani 2 una tabla llamada mig_examenes ?

Alejandro buen día, te paso la información requerida:

Las consultas tanto en PG como en IFX dan vacías

Sí si tenemos.

Saludos

Esa tabla es de Uds, para que la crearon? Porque en la migraciòn no va ser tenida en cuenta, mas alla que intente crearla en el esquema mig y luego pasar los datos, pero luego los scripts de migracion no la tendran en cuenta.
Podes agregar esa tabla en el archivo \01_IFX2PG\script_1.sql para que no la migre:

    AND (tabname[1,4] <> 'int_' OR (tabname IN ('int_arau_titulos', 'int_arau_instituc', 'int_arau_car_cc', 'mig_examenes')))

Alejandro, gracias por las respuestas, esa tabla ni idea de donde salio, de todas maneras agregue la corrección que me mandaste y sigue el error.

Mando captura.

Nuevamente consulto, entiendo el error que arroja el Pentahoo, pero no entiendo cómo es que llega a ser NULO el dato de materia, hice las consultas que me pediste y no devuelve nada.

El error lo pudimos observar en el paso Pasar datos tabla, tuvimos que hacer que nos tire un log y ahí pudimos encontrar eso. Lo raro es no corta el proceso en ese punto y pasa al siguiente paso…

¿El error es el mismo? Porque modificando ese archivo indicas que esa tabla no se migre.
No es una tabla del core de Guarani. Si la usaron para algun proceso como algo temporal, podrian borrarla de la base de informix. Previamente bajen los datos a un archivo por las dudas si necesitan contar con esos datos.

Alejandro, borre la tabla y tengo el siguiente error (mando logs, en los archivos)

Table input.0 - SQL query : SELECT * FROM sga_detalle_acta

Error inserting/updating row
ERROR: el valor nulo en la columna «acta» de la relación «sga_detalle_acta» viola la restricción de no nulo
Detail: La fila que falla contiene (CSNAT, N, null, LIC00, 37456156 , 53, 1, R, N, 2015-03-13, A, 10, null, null, null, 2000, 1, S, N, A).

Y después
Table output.0 - Error inserting/updating row
Table output.0 - ERROR: el valor nulo en la columna «acta» de la relación «sga_detalle_acta» viola la restricción de no nulo
Detail: La fila que falla contiene (CSNAT, N, null, LIC00, 37456156 , 53, 1, R, N, 2015-03-13, A, 10, null, null, null, 2000, 1, S, N, A).

Nuevamente lo raro es que el primer log lo toma como warning y la carga sigue, el Pentahoo para en el punto “Crea Schema de FK en postgres”

error_en_Crea_FK_en_pg.txt (341 Bytes)
log_detallado_pasar_tablas.txt (1,4 KB)

El problema parece que es cuando detecta que no puede hacer un insert, no sigue con ningún registro del archivo hasta que carga un nuevo lote.

Javier, seguis con el mismo problema.
Existe algun acta con el dato acta con un string vacio. El problema con eso que cuando se convierte a postgres, el string vacio “” lo convierte en NULL y por ese tema salta el error de que ese campo no puede ser nulo.

Busca en Informix actas con nro acta = ‘’
SELECT * FROM sga_actas_examen WHERE trim(acta) = ‘’;


En la carpeta \G2\00_Controles_Guarani2 vas a ver unos archivos. Por ejemplo el archivo mig_u_mesa_examen.sql es un strored procedure para poder cambiar un nombre de mesa de examen en la base de informix de Guarani 2.
Podrias utilizar un proceso similar para cambiar el nro de acta “” por un nro de acta que sea diferente al string vacio en todas las tablas relacioandas con sga_actas_examen.
O bien si es un acta de examen que no corresponde, pueden borrarla antes de migrar.

Supongo se refiere el 3er null, que es el nro de acta:

Detail: La fila que falla contiene (CSNAT, N, null, LIC00, 37456156 , 53, 1, R, N, 2015-03-13, A, 10, null, null, null, 2000, 1, S, N, A).

Alejandro, ayer después de darle muchas vueltas nos dimos cuenta que tenemos registros en la base de IFX con actas vacías. De la única forma en que nos devuelve los registros es realizando la siguiente consulta

select * FROM sga_actas_examen where unidad_academica=‘CSNAT’
and length(acta)=0

Entonces al procesar el paso de datos de IFX a PG, cuando detecta un error, no para el proceso, informa con un warning, NO da de alta los registros de ese batch y sigue con el próximo batch de datos.

Vamos a solicitar que se fijen y corrijan esos problemas y probamos nuevamente.

Muchas gracias

En la carpeta 00_Controles_Guarani2 existe el archivo mig_u_mesas_examen.sql que es un stored procedure para cambiar el nombre a una mesa de examen en la base de informix.
Podrias tomar ese procedure como ejemplo para ver de armar un script para cambiar el nro de acta a estas actas con ese problema.

Alejandro, gracias por los tips. Ya nos ponemos a trabajar con esto.

Saludos