Talend Open Studio es una herramienta Open Source que permite modelar transformaciones de datos de forma visual, básicamente es una herramineta ETL ( Extract Transform and Load – Extracción Transformación y Carga). Entre los usos que se le puede dar a esta herramienta es muy útil para realizar migraciones de datos, crear tablas de dimensiones para explorarlos con cubos OLAP, o sincronizar aplicaciones a nivel de base de datos. En esta serie de post vamos a ver como usarlo para migrar datos de una aplicación a otra.
Puedes descargarte Talend Open Studio desde su página de descargas. Talend esta basado en Eclipse, así que funciona sobre java, solo hay que descargarse el fichero, descomprimirlo y ejecutar el sh. Cuando ejecutas Talend salta una ventana en la que seleccionar el proyecto que quieres abrir, si es la primera vez que lo ejecutas selecciona crear un nuevo proyecto, puedes elegir crear el proyecto Java o Perl.
Una vez creado el proyecto puedes crear diferentes Jobs, o tareas, cada Job se podrá exportar como un programa Java para ejecutarlo desde linea de comandos.
Si queremos hacer una migración de una tabla de una BBDD a otra tabla de otra BBDD necesitamos que nuestro Job haga como mínimo lo siguiente:
- Conectar a Base de Datos de origen
- Conectar a Base de Datos de destino
- Consultar de la tabla de origen
- Mapear campos de una tabla a otra
- Escribir en tabla de destino
- Hacer commit de los cambios si todo ha ido bien
- Hacer rollback si ha habido algún error
Lo primero que vamos ha hacer es «dibujar» el esquema del Job y luego completaremos todos los parámetros.
En este ejemplo se va ha hacer una migración entre dos bases de datos PostgreSQL, así que lo primero crearemos las conexiones clickando y arrastrando dos /Database/PostgreSQL/tPostgresqlConnection sobre el panel de diseño.
Siguiendo en /Database/PosrgreSQL arrastraremos al panel de diseño un tPostgresqlInput para leer datos de una base de datos y un tPostgresOutput para escribir el resultado.
En /Database/PosrgreSQL también tenemos los componentes para realizar el commit (tPostgresCommit) si todo ha ido bien, y para realizar el rollback (tPostgresRollback) si ha habido algún error.
Por último necesitamos el componente que mapee los campos de una tabla a otra, el componente es /Processing/tMap
Ahora tenemos que organizar los componentes para crear el flujo de ejecución, lo primero que haremos es comprobar en el flujo que las conexiones a las base de datos funcionan correctamente, así que clickamos con el botón derecho del ratón sobre el icono del primer tPostgresConnection, seleccionamos Trigger/OnComponetOk y luego clickaremos sobre el segundo tPostgresConnection.
Repetimos esto para montar el flujo de manera que si conecta correctamente con una base de datos pase a conectar a la otra base de datos, si la segunda conecta correctamente lanza la consulta para la entrada del mapeo, y por último si la escritura funciona se conecta con el commit y si falla se seleccionará Trigger/OnComponetError para hacer el rollback.
Para completar el flujo de ejecución solo falta unir la lectura de datos con el mapeador y este con la carga de datos. Para esto primero clickamos con el botón derecho del ratón sobre el icono del tPostgresInput, seleccionamos Row/Main y luego clickaremos sobre el tMap.
Después clickamos con el botón derecho del ratón sobre el icono del tMap, seleccionamos Row/*New Output*(Main), luego clickaremos sobre el tPostgresOutput y por último le damos un nombre a esa conexión.
Al final el diseño del Job es el siguiente
Con esto tenemos la estructura del ETL, falta por crear los datos de las conexiones, que datos se van a leer, que datos se van a escribir y como se van a mapear. Esto lo veremos en la próxima entrada, y veremos también como exportar el proceso como un programa java ejecutable desde linea de comandos.
Me parece muy bueno tu articulo , si pudieras poner alguno sobre como migrar de sql server a postgresql te lo agradeceria mucho , tienes 5 en este.
Hola, la verdad que a este articulo le falta la segunda parte… tengo mucho lio de trabajo y tengo talend un poco abandonado. En la primera parte solo esta el dibujo de lo que sería el esquema del ETL, faltaría completar la configuración de las conexiones, las consultas, y el mapeo. Para hacer migración de sql server a postgres, sería igual pero cogiendo los componentes de sql server para la entrada, sería lo mismo pero cambiando un tPostgresConnection y el tPostgresInput por los correspondientes de Sql Server.
Mi mas sincera enhorabuena, esta genial este tutorial. esperamos la segunda parte con ansiedad.
Una pregunta, con Talend es posible hacer una ETL con varios flujos? es decir que mientras una tabla se esta rellenando que no espere a que termine para hacer otra cosa etc.. ya que me han pedido que busque el ETL más rápido para realizar un data worehouse de reporting y son muchos datos.
Creo que la segunda parte complementaria en un 100% a esta. Gracias y si la tienes ponla…. o si tienes algun sitio donde se pueda ver la configuraciòn de cada uno de los componentes para asi poner a trabajar tu diagrama te lo deberia. gracias.
Hola, lo siento pero este artículo lo escribí en mi anterior trabajo y hace mucho que no trabajo con talend. Ahora trabajo con sistemas y no se si podré completar este artículo
Hola angel. Amigo esto esta dr lujo. Seria bueno que a lo nuevos usuarios de tan poderosa herramienta, nos dieras la oportunidad de entenderla aun mas. Si no puedes seguir la segunda parte, porfa dinos donde podriamos obtener mayor informacion. Y gracias por dar tan buen open nw en este tema.
Queremos desarrollar un proyecto para extraer datos de SAP R3, pasarlo a una base de datos Sql Server. Pero tengo una pregunta es posible generar ejecutables de estos JOB y es posible cifrar la contraseña y el usuario, en estos JOB ejecutables, pero debe ser ingresados por parámetros, para no conocer de antemano esta información.
Gracias,
Buenas, lo siento pero esta entrada tiene mucho tiempo y hace más de dos años que no trabajo con talend y no puedo ayudarte