error con migración de datos actividades

Estimados buenos días, probé la migración de actividades en un servidor de desarrollo que tenia instalado guarani 3.17 y se migro a guarani 3.18.

Se creo el archivo csv, se guardo en la carpeta Externos\01_schemas\CSV.

Se corrio luego el script_mig_actividades.kjb y me arrojo el siguiente error.

2020/10/29 16:07:16 - upload_mig_actividades - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : ¡Errores detectados!
2020/10/29 16:07:16 - Salida Tabla.0 - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : Because of an error, this step can’t continue:
2020/10/29 16:07:16 - Salida Tabla.0 - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : org.pentaho.di.core.exception.KettleValueException:
2020/10/29 16:07:16 - Salida Tabla.0 - Unexpected conversion error while converting value [creditos String] to a Number
2020/10/29 16:07:16 - Salida Tabla.0 -
2020/10/29 16:07:16 - Salida Tabla.0 - creditos String : couldn’t convert String to number
2020/10/29 16:07:16 - Salida Tabla.0 -
2020/10/29 16:07:16 - Salida Tabla.0 - creditos String : couldn’t convert String to number : non-numeric character found at position 1 for value [-]
2020/10/29 16:07:16 - Salida Tabla.0 -
2020/10/29 16:07:16 - Salida Tabla.0 -
2020/10/29 16:07:16 - Salida Tabla.0 -
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.core.row.value.ValueMetaBase.getNumber(ValueMetaBase.java:2035)
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.core.row.value.ValueMetaBase.convertData(ValueMetaBase.java:3858)
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.core.row.value.ValueMetaBase.convertBinaryStringToNativeType(ValueMetaBase.java:1621)
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.core.row.value.ValueMetaBase.getString(ValueMetaBase.java:1825)
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.core.row.RowMeta.getString(RowMeta.java:329)
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.core.row.RowMeta.getString(RowMeta.java:864)
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.trans.steps.tableoutput.TableOutput.writeToTable(TableOutput.java:384)
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.trans.steps.tableoutput.TableOutput.processRow(TableOutput.java:125)
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)
2020/10/29 16:07:16 - Salida Tabla.0 - at java.lang.Thread.run(Thread.java:748)
2020/10/29 16:07:16 - Salida Tabla.0 - Caused by: org.pentaho.di.core.exception.KettleValueException:
2020/10/29 16:07:16 - Salida Tabla.0 - creditos String : couldn’t convert String to number
2020/10/29 16:07:16 - Salida Tabla.0 -
2020/10/29 16:07:16 - Salida Tabla.0 - creditos String : couldn’t convert String to number : non-numeric character found at position 1 for value [-]
2020/10/29 16:07:16 - Salida Tabla.0 -
2020/10/29 16:07:16 - Salida Tabla.0 -
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.core.row.value.ValueMetaBase.convertStringToNumber(ValueMetaBase.java:1044)
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.core.row.value.ValueMetaBase.getNumber(ValueMetaBase.java:1975)
2020/10/29 16:07:16 - Salida Tabla.0 - … 9 more
2020/10/29 16:07:16 - Salida Tabla.0 - Caused by: org.pentaho.di.core.exception.KettleValueException:
2020/10/29 16:07:16 - Salida Tabla.0 - creditos String : couldn’t convert String to number : non-numeric character found at position 1 for value [-]
2020/10/29 16:07:16 - Salida Tabla.0 -
2020/10/29 16:07:16 - Salida Tabla.0 - at org.pentaho.di.core.row.value.ValueMetaBase.convertStringToNumber(ValueMetaBase.java:1037)
2020/10/29 16:07:16 - Salida Tabla.0 - … 10 more
2020/10/29 16:07:16 - Salida Tabla.0 - Procesamiento finalizado (EN=0, SA=4420, LE=4421, ES=4000, AC=0, ER=1)
2020/10/29 16:07:16 - upload_mig_actividades - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : ¡Errores detectados!

Pero seguí con los pasos de la migración, ya que revise y la tabla ‘mig_actividades’ en el esquema ‘ext’ estaba creada, y la misma estaba cargada con los datos del csv.

todos los demás scripts se ejecutaron sin problemas, y los excel de los controles dieron correctos y corroborados.

Pensé que todo había salido bien, y solo había sido un error desconocido en pentaho, pero cuando quiero revisar desde gestión en la opción PROPUESTAS FORMATIVAS\ACTIVIDADES\ADMINISTRAR ACTIVIDADES me aparece el siguiente error.

SQLSTATE[22P05]: Untranslatable character: 7 ERROR: character with byte sequence 0xe2 0x80 0xa6 in encoding “UTF8” has no equivalent in encoding “LATIN1” Más info…

SQLSTATE: db_22P05

CODIGO: 7

MENSAJE: ERROR: character with byte sequence 0xe2 0x80 0xa6 in encoding “UTF8” has no equivalent in encoding “LATIN1”

SQL: SELECT sga_elementos.elemento,\n sga_elementos.codigo,\n sga_elementos.entidad,\n sga_elementos.nombre,\n sga_elementos.nombre_abreviado,\n sga_g3entidades_tipos.entidad_tipo,\n sga_g3entidades_tipos.nombre as tipo_desc,\n sga_g3entidades_subtipos.entidad_subtipo,\n sga_g3entidades_subtipos.nombre as subtipo_desc,\n sga_elementos.estado as estado,\n sga_elementos_estados.descripcion as estado_desc,\n sga_g3entidades.entidad_subtipo,\n sga_g3entidades.entidad\n FROM sga_elementos,\n sga_g3entidades_subtipos,\n sga_g3entidades_tipos,\n sga_elementos_estados,\n sga_g3entidades \n WHERE sga_g3entidades_subtipos.entidad_tipo = “2” AND sga_elementos.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo\n AND sga_g3entidades_subtipos.entidad_tipo = sga_g3entidades_tipos.entidad_tipo\n AND sga_elementos.estado = sga_elementos_estados.estado\n AND sga_elementos.entidad = sga_g3entidades.entidad \n ORDER BY sga_elementos.codigo\n ; – toba_log: 1115011942

lo cual me parece totalmente raro, ya que la base de datos esta en encoding UTF8 , mismo el client_encoding en la base de datos tmb esta en utf8.

Cuando revise en la base de datos el view vw_actividades me aparecen todas las actividades que migraron.

¿No se cual es el problema, o si yo estoy confundido y estoy buscando mal en gestión la opción para ver las actividades?.

Podrían darme una ayuda.

Gracias!

El error en la migración es creditos String : couldn’t convert String to number
Parece que esta en el campo “creditos” (numeric(8,2)) que es el dato que esta en la posición 8 dentro del archivo mig_actividades.csv
¿Que dato ingresaron en ese campo para las actividades que importaron en la base?

Alejandro,

Corregimos el csv, ya que tenia en el campo 8 un caracter que no debia estar.

La migración finalizo con exito.

Pero cuando queremos entrar al sistema y vamos a la opción administrar actividades me sale el siguiente error de BD:

SQLSTATE[22P05]: Untranslatable character: 7 ERROR: character with byte sequence 0xe2 0x80 0xa6 in encoding “UTF8” has no equivalent in encoding “LATIN1” Más info…

SQLSTATE: db_22P05

CODIGO: 7

MENSAJE: ERROR: character with byte sequence 0xe2 0x80 0xa6 in encoding “UTF8” has no equivalent in encoding “LATIN1”

SQL: SELECT sga_elementos.elemento,\n sga_elementos.codigo,\n sga_elementos.entidad,\n sga_elementos.nombre,\n sga_elementos.nombre_abreviado,\n sga_g3entidades_tipos.entidad_tipo,\n sga_g3entidades_tipos.nombre as tipo_desc,\n sga_g3entidades_subtipos.entidad_subtipo,\n sga_g3entidades_subtipos.nombre as subtipo_desc,\n sga_elementos.estado as estado,\n sga_elementos_estados.descripcion as estado_desc,\n sga_g3entidades.entidad_subtipo,\n sga_g3entidades.entidad\n FROM sga_elementos,\n sga_g3entidades_subtipos,\n sga_g3entidades_tipos,\n sga_elementos_estados,\n sga_g3entidades \n WHERE sga_g3entidades_subtipos.entidad_tipo = “2” AND sga_elementos.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo\n AND sga_g3entidades_subtipos.entidad_tipo = sga_g3entidades_tipos.entidad_tipo\n AND sga_elementos.estado = sga_elementos_estados.estado\n AND sga_elementos.entidad = sga_g3entidades.entidad \n ORDER BY sga_elementos.codigo\n ; – toba_log: 1115011943

La base esta en encoding UTF8 .

Revisaron los nombres y/o códigos de las actividades que importaron si tiene algún caracter UTF8 que no es soportado en encoding LATIN1?

Este caracter:
Que corresponde al mensaje que les da: 0xe2 0x80 0xa6
Fijate si encontras una actividad con ese caracter:

select * from sga_elementos where  nombre like '%…%' or codigo like '%…%'

Alejandro,

Ese carácter ya lo había buscado para quitar, por que había encontrado que hablaban acerca de ese error, igualmente me seguía tirando error.

Ahora probé con un archivo mas chico, y elimine espacios que había desde el delimitador y el primer carácter, también un espacio que agregaban a tras de otro carácter, y ahí me funciono. Estoy pidiendo que me envíen el archivo completo para procesarlo y te confirmo si funciono correcto.

Igual la duda me queda, ¿Por qué si mi servidor esta con LANG= es_AR-UTF8 y todos los encoding de la base están en UTF8, el error es acerca de LATIN1?

Hola,

¿que pasa si prueban esta solución?

En mi caso cuando ejecuto show client_encoding; en la DB me devuelve UNICODE, pueden probar ejecutando SET client_encoding = ‘UTF8’; o SET client_encoding = ‘UNICODE’;.

saludos.
2

El error es por el encoding LATIN1 porque es el enconding con el cual se conectan a la base de datos. Fijate el archivo de configuración instalacion/bases.ini

[desarrollo guarani guarani]
motor = “postgres7”
profile = “…”
usuario = “…”
clave = “…”
puerto = “…”
encoding = “LATIN1”
base = “guarani3”
schema = “negocio”

Alejandro,

Efectivamente el bases.ini tengo el encoding como latin1, pero debo cambiarlo a UTF8?

Esto se creo luego de la actualización de 3.18?

Estuve probando con varias formas del archivo cambiando los caracteres y demas, cambie muchos caracteres raros, puntos suspensivos, dieresis, etc. Cuando migro un archivo con 14 o 20 actividades los migra e ingreso al sistema y las veo si problemas, pero cuando migro el que contiene las 4777 los migra pero cuando ingreso al sistema me da el error de encoding.

Puedo partir el archivo en 4 o 5 y asi poder ir migrandolos de a poco para poder saber concretamente cual es el caracter que no me esta tomando?, o una vez que corro la migración con un archivo, despues no puedo volver a correrlo con otro por que me los pisa?

Espero tu respuesta a las 2 preguntas.

Muchas Gracias

Leonel,

esta solución la había encontrado cuando la busque, y en mi BD guarani3 me devuelve el comando show client encoding; UTF8, por lo cual ya esta en UTF8 no debería setearlo de nuevo,

vos decís que lo setee en UNICODE?

Efectivamente el bases.ini tengo el encoding como latin1, pero debo cambiarlo a UTF8?
No. Recomendamos que sea LATIN1. Debieran encontrar el problema de la/s actividad/es que migraron con un caracter que no esta soportado en LATIN1 y sacarlo o reemplazarlo por uno que este soportado en este enconding.

Alejadnro, esta bien vamos a buscar eso. Pero por eso te preguntaba si se podia realizar la migración por partes es decir, partir al archivo e ir subiendo para saber donde esta el caracter raro.

La migración si la voy cargando me borra los datos que tenia o los suma a los que ya tenia??

Por otro lado, en el manual de instalacion 3.18 recomiendan que el cluster y la base de postgresql este en UTF8.

Pero por eso te preguntaba si se podia realizar la migración por partes es decir, partir al archivo e ir subiendo para saber donde esta el caracter raro.
Si, pero va a ser tedioso este proceso. Si tienen un archivo con los datos de las actividades en UTF8 y lo convierten a LATIN1, no pueden alli encontrar los caracteres que no pueden leerse en LATIN 1?
La migración si la voy cargando me borra los datos que tenia o los suma a los que ya tenia??
No. Se van a generar nuevas actividades, aunque si detecta que ya existe una actividad con mismo codigo y nombre no va a dejar importarla.
Por otro lado, en el manual de instalacion 3.18 recomiendan que el cluster y la base de postgresql este en UTF8.
Si es correcto. Una cosa es el cluster de la base de datos que en el manual de instalacion indicamos que sea UTF8; lo otro es el enconding con el cual se conectan a la base de datos desde Guarani.

Alejandro,

Cree un archivo en notepad++ con codificación ANSI e igual asi tampoco puedo cargarlo.

Ya no se que utilizar, no hay caracteres extraños, mas que acentos, puntos, puntos y comas, barras invertidas.

A que te referis que no podes cargarlo? No podes importarlo en la base de Guarani o que lo importas pero luego da error cuando consultas las actividades desde la operación “Administrar Actividades” ?

¿Podes adjuntar el archivo con los datos con encoding UTF8?

Alejandro,

Me refería a que si las puedo migrar en la tabla me aparecen, pero cuando hago la operación “administrar actividades” me da el error del latin1.

Te adjunto el archivo de actividades.


mig_actividades_4_11.rar (89.9 KB)

Al archivo lo abri con el Notepad ++ y converti a ANSI. Fijate de importar las actividades desde este archivo.
Lo que veo es que generaste con blancos a izquierda en el codigo, nombre y nombre reducido de la actividad. Quizas luego de importar podes realizar una actualizacion de estos campos limpiando esos blancos que estan en la izquierda del texto.


mig_actividades_4_11_ANSI.rar (89.4 KB)

Alejandro,

Si el tema de los blancos a la izquierda en esos campos, se lo consulte a la gente que genero el archivo, y me dicen que deben mantener esos codigos por un tema de organización de nombre de las materias.

Se lo voy a comunicar igualmente.

Ahora pruebo este archivo que me pasaste y te confirmo.

Alejandro,

Con el archivo que me pasaste me sigue dando el mismo error, las tablas migraron, pero desde el sistema cuando voy a administrar actividades sigue saliendo error de latin1.

Voy a probar modificando el archivo, quitandole los espacios a la izquierda de los campos que me nombraste. y vuelvo a probar la migración.

Alejandro,

Pude cargar el archivo y ya no me tira mas error desde administrar actividades.

El problema esta es que , del archivo que me pasaste en ANSI, cuando miraba en las tablas de la base de datos encontré varios caracteres que no me tomaban correctamente, Tuve que quitar los acentos, los puntos suspensivos, y cambiar las Ñ por N.

El problema es que necesitamos cargar las actividades con las Ñ, como podríamos hacer?

Que raro, porque ANSI/LATIN1 soporta letras con tilde y ñ.
Vemos si podemos importar los datos y encontrar el problema.