Publicado el Dejar un comentario

Kettle, una herramienta gratuita para extraer, transformar y cargar datos.

Todo trabajador en informática nos hemos topado con la necesidad de pasar datos de una base de datos a otra o de cargar datos a una base de datos desde archivos de texto , hojas de cálculo o archivos dbf, etc.

Y en ocasiones hay que subirlos o pasarlos en un formato diferente al del origen o tener que hacer correcciones u operaciones con los datos antes de que lleguen a su destino. El hacer los programas para llevar a cabo esas tareas llevaba tiempo, dinero y esfuerzo.

Afortunadamente ya existen herramientas tanto comerciales como gratuitas para llevar a cabo estas operaciones de forma casi automática y de forma gráfica. Una de esas herramientas que he utilizado mucho es Kettle de Pantaho. Una excelente herramienta ETL (extracción, transformación y carga) y además gratuita.

Esta desarrollada en java y permite hacer trabajos y transformaciones en forma gráfica. Para operaciones más complicadas de transformación de datos, permite crear tus propios scripts en javascript o java. Permite además guardar todos tus trabajos y transformaciones en un repositorio en una base de datos para poder ser compartidas y ejecutadas por otros miembros de la organización u equipo.

Puedes emplear las librerías java en las que se basa este software para integrar kettle en una aplicación java, ya sea desktop o web, y desde ahí ejecutar los trabajos y transformaciones.

Posiblemente de lo que adolece algo esta aplicación es de que no tiene una buena documentación, pero junto con la aplicación se descargan unos trabajos y transformaciones de ejemplos. Además existen unos unos libros que hablan de esta herramienta.

Se las recomiendo ampliamente. Pueden descargar la última versión desde el sitio de Kettle en Sourceforge, selecciones la versión que dice estable y la más reciente. Para ejecutar la aplicación necesitan tener instalado en su máquina Java 6 o mayor.

Les dejo una pantalla de este excelente software.. ¡saludos!

Kettle en acción
Kettle de Pentaho

 

Publicado el Dejar un comentario

Informix: -23103 – code-set conversion function failed due to illegal sequence or invalid value

Resulta que necesitaba duplicar una base de datos informix en mi trabajo para probar unas nuevas implementaciones al sistema en producción.  La versión de informix en producción era 9.x. Me baje la versión de desarrollo de Informix que es gratuita pero versión 11.x. El sistema operativo de producción es Solaris 10. Mi ambiente de desarrollo Windows 7. Instalé la versión de desarrollo de Informix con algunos pequeños detalles pero al final la instaló y funcionó. Me pude conectar a ella sin problema.

Los operadores de la base de datos en producción me pasó el respaldo completo de la base de datos generada con el comando dbexport, una carpeta formada con el nombre de la base de datos más la extensión exp, Adentro trae los datos y los c comandos para crear la base de datos completa. Después de crear el Dbspace donde iba a estar la Base de Datos de Desarrollo me dispuse a crear la Base de Datos con el respaldo proporcionado.

Ejecuté el comando dbimport nombre_base_de_datos nombre_-d dbspace, el comando inició sin problemas, me aparecía en pantalla los comandos que iba ejecutando, la creación de las tablas y la carga de datos, de pronto se detuvo en la carga de los datos de una tabla, el mensaje que me arrojó fue:

“-23103 – code-set conversion function failed due to illegal sequence or invalid value”

Pues a investigar de que se trataba. El problema era el Locale de la base de datos que estaba importando y el locale del ambiente DOS desde donde estaba ejecutando el comando dbimport. Cada base de datos guarda el locale en el que fue creado. Echando un vistazo a las variables de la ventana DOS donde estaba ejecutando el comando, me aparecieron con el valor por omisión de la instalación de Informix, éstas eran CLIENT_LOCALE=en_US.8859-1 y DB_LOCALE=en_US.8859-1. La primera variable de ambiente le indica a Informix el locale del cliente, la segunda variable el locale de la base de datos.

Para obtener en que locale se creó la base de datos hay que ejecutar en la base de datos sysmatser de informix el siguiente comando:

select * from sysdbslocale where dbs_dbsname = 'nombre_base_de_datos';

La columna dbs_collate es la que andamos buscando, esta columna indica el que locale está la base de datos que queremos importar. En mi caso me arrejó en_US.819. Me fui a ventana de DOS donde estaba ejecutando el comando de importación, borre la Base de Datos creada parcialemente por medio de comando dbaccess.

Establecí las variables de ambiente de la siguiente forma: SET CLIENT_LOCALE=en_US.8859-1 y SET DB_LOCALE=en_US.819

Y nuevamente ejecuté el comando dbimport y asunto arreglado.

Espero y les sea de utilidad.