[Solucionado]Error en migración de módulo Personas , trabajo mig_Personas.kjb

Hola:

Estamos haciendo el proceso de migración de 2.9.3 a Guarani 3.11.2

Ya pasamos las instancias de pasajes de datos de Informix a Postgres, Precontroles, y Conversión de PK.

Ahora nos encontramos migrando el módulo Personas pero el trabajo da error al ejecutar el paso 10_mdp_personas_extranjeros.sql

El error sql es el siguiente:

ERROR: la sintaxis de entrada no es válida para integer: « »

********** Error **********

ERROR: la sintaxis de entrada no es válida para integer: « »
Estado SQL:22P02

Aislando el error encontramos que el problema se encuentra en la línea 20:

CAST(msp.residencia AS INTEGER),

Que trata de tansformar el valor del campo residencia de mig.sga_personas (referenciado como “msp”) a un entero. Viendo sga_personas encontramos que el campo “residencia” es un char(1)

Sin embargo en los datos de la tabla sga_personas del esquema mig ningún registro tiene asignado algún valor en el campo “residencia” por lo tanto la función CAST da error.

¿Cómo podemos rellenar estos datos de forma correcta? ¿Qué valores posibles debería tener el campo “residencia”? ¿No deberían los precontroles chequear que este campo no este vacío?

Muchas gracias por cualquier ayuda.


10_mdp_personas_extranjeros.sql (1.97 KB)

Buenas tardes. Estuvimos probando el script en cuestión y no podemos reproducir el error.
Cuando un campo en el valor residencia es null trae null y no nos tira error.

Probamos con esto y no arroja error alguno el postgres.

CAST(null AS INTEGER) 

Quizás puede llegar a ser la versión de postgres con la que están trabajando.
Que versión de postgresql tienen donde están tratando de llevar a cabo la migración?

Saludos.

Estamos trabajando con Postgres 9.1.18 sobre Linux (Debian Wheezy)

Se encontró cual era el error.

Habían varios registros de la tabla mig.sga_personas dondel el campo residencia estaba puesto a empty y no a NULL.

La función CAST falla con valores empty no así con los NULL

Se cambiaron todos los valores de la tabla mig.sga_persona con valor empty a NULL

UPDATE mig.sga_personas SET residencia = NULL WHERE residencia = '';

Gracias y saludos

Federico