Problema en paso "Pasar datos tablas" - ERROR: value too long for type character

Estimados,

estoy aprovechando que tengo algo de tiempo para empezar con las pruebas de migración. Instalé todo el entorno y tengo hace unos meses
Guaraní 3.13.0 funcionando para algunas pruebas y para que el personal administrativo lo vaya viendo.

El problema que tengo es que en el paso en el que se transfieren todas las tablas al esquema mig de postgres desde informix, en muchas aparece el error
“ERROR: value too long for type character varying” y ya deja de insertar registros para esa tabla. Luego de terminar con este paso el trabajo sigue hasta llegar a al paso “Crea Schema de FK en postgres”, donde como no tiene datos que necesita para las FK obviamente muestra un error y se detiene por completo.

Dejo algunos ejemplos de este error y al final el listado de tablas donde se presenta. Agradezco cualquier ayuda que me permita avanzar.

Mi configuración es la siguiente:
Pentaho Data Integration 7.1
IBM Informix Dynamic Server Version 11.50.UC5E
Guaraní 3.13.0
PostgreSQL 9.3.17
Guaraní 2.9.4 (usamos la 2.6.4 pero llevé un respaldo a esa versión para hacer la migración)

sga_exep_insc_llam
2017/12/13 13:53:49 - Table output.0 - WARNING: Couldn’t insert row into table: [00104], [A0325], [2010], [Julio - Agosto], [Antrop. y Ética], [2], [2010/05/31 00:00:00.000], [2010/07/31 23:59:00.000]
2017/12/13 13:53:49 - Table output.0 -
2017/12/13 13:53:49 - Table output.0 - Error inserting/updating row
2017/12/13 13:53:49 - Table output.0 - ERROR: value too long for type character varying(15)

sga_fec_insc_llam
2017/12/13 13:54:33 - Table output.0 - WARNING: Couldn’t insert row into table: [2014], [2014- Última Materia], [1], [1], [null], [2014/04/30 00:00:00.000], [2015/03/05 23:59:00.000], [2015/03/05 23:59:00.000]
2017/12/13 13:54:33 - Table output.0 -
2017/12/13 13:54:33 - Table output.0 - Error inserting/updating row
2017/12/13 13:54:33 - Table output.0 - ERROR: value too long for type character varying(20)

mig.sga_insc_exa_bajas
2017/12/13 13:54:33 - Table output.0 - WARNING: Couldn’t insert row into table: [00104], [P0001], [14251], [A0325], [2010], [Julio - Agosto], [Antrop. y Ética], [1], [2010/06/22 10:56:58.000], [2010/06/18 09:50:17.000], [L], [N], [null], [7751], [3], [7953], [3]
2017/12/13 13:54:33 - Table output.0 -
2017/12/13 13:54:33 - Table output.0 - Error inserting/updating row
2017/12/13 13:54:33 - Table output.0 - ERROR: value too long for type character varying(15)

Pentaho Data Integration 7.1
IBM Informix Dynamic Server Version 11.50.UC5E
PostgreSQL 9.3.17
Guaraní 3.13.0

mig.sga_cursos_ingreso
mig.sga_exep_insc_llam
mig.sga_fec_insc_llam
mig.sga_insc_exa_bajas
mig.sga_llamados
mig.sga_turnos_examen
mig.int_arau_instituc
mig.sga_causa_perd_reg
mig.sga_docentes_llama
mig.sga_titulos_sec
mig.mug_localidades
mig.sga_situacion_asp
mig.sga_actas_examen
mig.sga_equiv_notasext
mig.sga_excep_cont_exa
mig.sga_insc_examen
mig.sga_atrib_mat_plan
mig.sga_carreras
mig.sga_materias
mig.sga_comisiones
mig.sga_mesas_examen
mig.sga_coleg_sec
mig.u829_insc_regxexa
mig.mug_localidades_l
mig.gde_encues_rpta
mig.mdp_act_ec_sector
mig.mdp_act_ec_subsect
mig.sga_llamados_mesa
mig.sga_datos_censales

Desde ya, gracias por su tiempo
Lisandro.-

Hola Lisandro, en todos los casos que veo el error lo da en el nombre de la mesa de examen (Antrop. y Ética) que tiene 15 caracteres de longitud que es como esta definido ese campo.
Tambien en: “2014- Última Materia” (que tiene justo 20 caracteres como el nombre del turno)

¿Sera problema de la tilde que tiene ese nombre?
Que el programa que pasa de informix a postgres ese registro convierta ese caracter (É) a mas caracteres porque no lo puede interpretar y que por eso no pueda insertarlo?

Proba crear la siguiente tabla :

CREATE TABLE mig.sga_exep_insc_llam2 (
UNIDAD_ACADEMICA varchar(5) NOT NULL,
MATERIA varchar(5) NOT NULL,
ANIO_ACADEMICO integer NOT NULL,
TURNO_EXAMEN varchar(20) NOT NULL,
MESA_EXAMEN varchar(15) NOT NULL,
LLAMADO integer NOT NULL
);
– Con tilde el nombre de la mesa
INSERT INTO mig.sga_exep_insc_llam2 (unidad_academica, materia, anio_academico, turno_examen, mesa_examen, llamado)
Values (‘00104’,‘A0325’, 2010, ‘Julio - Agosto’, ‘Antrop. y Ética’, 2);

– Sin tilde el nombre de la mesa
INSERT INTO mig.sga_exep_insc_llam2 (unidad_academica, materia, anio_academico, turno_examen, mesa_examen, llamado)
Values (‘00104’,‘A0325’, 2010, ‘Julio - Agosto’, ‘Antrop. y Etica’, 2);

  • Quizas desde el mismo postgres esto funcione y no de el error que te da con el programa que pasa los datos de las tablas de la base de informix a la base de postgres.

Hola Alejandro,

antes que nada te agradezco la pronta respuesta.

Tiene que ver con lo que mencionás evidentemente.

Cada caracter que quiero insertar con un acento ocupa el doble, o sea, si es una cadena de 15 caracteres entran 15 sin acentos, 14 si hay un caracter
con acento o 13 si tengo dos, etc.

FALLA: INSERT INTO mig.sga_exep_insc_llam2 (unidad_academica, materia, anio_academico, turno_examen, mesa_examen, llamado)
Values (‘00104’,‘A0325’, 2010, ‘Julio - Agosto’, ‘Antrop. y Ética’, 2);

FALLA: INSERT INTO mig.sga_exep_insc_llam2 (unidad_academica, materia, anio_academico, turno_examen, mesa_examen, llamado)
Values (‘00104’,‘A0325’, 2010, ‘Julio - Agosto’, ‘Antrop. y Étíc’, 2);

FUNCIONA: INSERT INTO mig.sga_exep_insc_llam2 (unidad_academica, materia, anio_academico, turno_examen, mesa_examen, llamado)
Values (‘00104’,‘A0325’, 2010, ‘Julio - Agosto’, ‘Antrop. y Etica’, 2);

FUNCIONA: INSERT INTO mig.sga_exep_insc_llam2 (unidad_academica, materia, anio_academico, turno_examen, mesa_examen, llamado)
Values (‘00104’,‘A0325’, 2010, ‘Julio - Agosto’, ‘Antrop. y Étic’, 2);

Las consultas las estoy tirando desde pgAdmin. la codificación en postgres de esa base de datos es SQL_ASCII y el sistema operativo desde el cual
tiro las consultas tanto con Pentaho como con pgAdmin es Windows 8.1.

Cómo lo podría solucionar?

Si, creo que esta conviriendo ese caracter, por ejemplo el nombre Antrop. y Ética lo convierte a Antrop. y Ética­

El problema es como crearon la base, el encoding debe ser UTF8 y no SQL_ASCII

Mira el punto 3 de la documentación de los requisitos para la instalación de la base.

Tenés razón, se me pasó. Está bien convertir la base ahora o me conviene empezar de 0?

Gracias.

No podes cambiar el encoding de la base. Tenes que volverla a crear y creo depende de como este instalado el servidor que soporte ese encoding.

Bueno, ya revisé el history y vi qué pasó, aparentemente cambié la configuración del LOCALE y demás después de instalar postgresql y eso fue lo que me dejó mal la base.

Gracias por todo, pruebo hacerlo de nuevo, podemos dar este ticket por cerrado.