Error: Data truncation: Data too long for column en Spoon

No es novedad que me encuentro traspasando datos con Pentaho Data Integrator. Realmente es una excelente herramienta para el precio que tiene.

Me encuentro copiando datos de un MySQL a otro MySQL a través del asistente y todo iba bien, hasta que al momento de iniciar la transformación me da el siguiente mensaje:

Data truncation: Data too long for column

Este error se da cuando crea la tabla automaticamente, no lo crea con el tamaño de datos correcto. Revisé la tabla de origen y la columna era un varchar(255) y la de destino era una varchar(85).
La solución fue modificiar la tabla de destino y asignarle un mayor tamaño al tipo de datos varchar de la columna de destino.

 

Error «Unable to get value ‘Date’ from database resultset» en Spoon

Tal como les comenté en el post anterior, estoy trabajando moviendo unos datos usando la herramienta Pentahoo Data Integrator.

Hace ya varios días que venía peleando con una migración, específicamente con una columna que tiene el tipo de datos datetime.

Específicamente el mensaje que error que arroja es este:

Unable to get value ‘Date’ from database resultset

Luego de eso viene un montón de mensajes referentes al driver de conexión, astros, citas del Corán, de la Biblia y cualquier otro mensaje ilegible.

Revisando en los foros de la herramienta, dicen que es un problema de MySQL ser permisivo con los valores que se le ingresan. Para lidiar con esto, hay que ir a las propiedades de la conexión a la base de datos, ir a las opciones y agregar el parámetro zeroDateTimeBehavior y asiganarle el valor convertToNull.

Opciones de la conexion
Opciones de la conexion

Copiar tablas completas con Pentaho Data Integrator

¡Que taaal! Tiki tiki tí Publicando este artículo bien diciochero jeje.

Hoy les contaré sobre como realizar copias de tablas usando Pentaho Data Integrator, que es una herramienta gratuita, multiplataforma y de código abierto para construir paquetes ETL.

Es bastante potente y no tiene mucho que envidiar a otras que son de paga, por ejemplo, SQL Server Integration Services e Informatica.

Tiene bastantes asistentes que ayudan con las tareas y en este caso usaremos un asistente.

  1. Crear la conexión a la base de datos de origen y  de destino
  2. Ir a Tools -> Wizard -> Copy Table
  3. Seleccionar la conexión base de datos de origen y de destino

    Conexion de Origen y de Destino
    Conexion de Origen y de Destino
  4. Luego se hace la selección de la tabla que se quiere copiar

    Seleccion de Tabla
    Seleccion de Tabla
  5. Aunque ya se ha definido la conexión de destinoi (DB, Usuario, Password, Host) queda configurar el esquema, por lo menos para este caso que el RDBMS es MySQL, es por esto que hay que configurar el step
    Editar el step
    Editar el step

    Además, hay que ejecutar la consulta de creación de tabla. Para esto, hacer click en el botón SQL y ejecutar la sentencia que aparece ahí. Si esto no se hace, arrojará un error de que no se encuentra la tabla y la tarea no terminará de forma satisfactoria.

    SQL Query
    SQL Query
  6. Una vez que está todo configurado, se procede a ejecutar el flujo

    Ejecutar Proceso
    Ejecutar Proceso
  7. Se abrirá la ventana de configuración de la ejecución. En este caso, nada más se hace click en launch

    Ejecutar Proceso
    Ejecutar Proceso

Si todo se ha configurado bien, el proceso durará según el tamaño de la tabla y si es una base de datos externa, de la conexión con el servidor.

Espero que les sirva!