jasperetl descargar java etl embeddable

java - jasperetl - descargar etl



Java ETL: difĂ­cil de encontrar uno adecuado (4)

¿Conoces a Talend ?

Es una herramienta basada en Eclipse (Talend Open Studio), pero puede usarla directamente en Java escribiendo su propio código o exportando trabajos a clases de Java.

Estoy buscando un ETL de Java que se pueda incrustar, es decir, un motor Extract Transform Load que se pueda llamar desde el código Java.

Me resulta sorprendentemente difícil encontrar uno adecuado.

Principalmente estoy mirando la carga de archivos de texto delimitados en tablas de bases de datos, con algunas transformaciones menores en el camino.

Me gustaría las siguientes características:

  • la capacidad de especificar las asignaciones simples externamente, por ejemplo, la columna de texto 5 a la columna de la base de datos foo, especificó algún archivo de asignación xml
  • la capacidad de dar al nodo de la base de datos un javax.sql.Datasource

CloverETL permite que la asignación se especifique en XML, pero las conexiones de la base de datos deben ser nombres JNDI o un archivo de propiedades que especifique driverClass, url, dbusername, password, etc. Dado que ya tengo javax.sql.Datasource configurado por mi marco de inyección de dependencias, Los archivos de propiedades parecen ser dolorosos y no robustos, especialmente si quiero que esto funcione en varios entornos (dev, test, prod).

KETL me dice que "Actualmente estamos revisando completamente nuestra documentación para KETL ™. Debido a esto, solo la guía de instalación se ha actualizado". Honesto, pero no ayuda.

Octopus ahora es "http://www.together.at/prod/database/tdt", que está "en construcción".

Pentaho parece usar el mismo estilo "especificar driverClass" que CloverETL, en lugar de usar una fuente de datos, pero la documentación de Pentaho para llamar a su motor desde el código Java es difícil de encontrar.

Básicamente me gustaría poder hacer este pseudocódigo:

extractTransformLoad( getInputFile( "input.csv" ) , getXMLMapping( "myMappingFile.xml") , new DatabaseWriter( getDatasource() );

¿Alguna sugerencia?


Divulgación: soy el autor de Scriptella ETL , pero creo que esta herramienta podría ser útil para su caso.

Es un ETL de código abierto ligero con una integración de una sola línea con Java. También es compatible con Spring Framework y viene con controladores incorporados para CSV, texto, XML, Excel y otras fuentes de datos.

Ejemplo de importación de un archivo CSV en una tabla:

<!DOCTYPE etl SYSTEM "http://scriptella.org/dtd/etl.dtd"> <etl> <connection id="in" driver="csv" url="data.csv" /> <connection id="out" driver="oracle" url="jdbc:oracle:thin:@localhost:1521:ORCL" classpath="ojdbc14.jar" user="scott" password="tiger" /> <!-- Copy all CSV rows to a database table --> <query connection-id="in"> <!-- Empty query means select all columns --> <script connection-id="out"> INSERT INTO Table_Name VALUES (?id,?priority, ?summary, ?status) </script> </query> </etl>

Ejecutando desde Java:

// Execute etl.xml file EtlExecutor.newExecutor(new File("etl.xml")).execute();

Ejecutando desde la línea de comandos:

scriptella [file_name]

Integración con Spring:

  1. Utilice el controlador "spring" y el nombre del bean para hacer referencia a las fuentes de datos. Ejemplo:

    <connection id="spring" driver="spring" url="datasourceBeanName" />

  2. Agregue EtlExecutorBean al contexto de la aplicación para ejecutar el trabajo:

    <bean id="createDb" class="scriptella.driver.spring.EtlExecutorBean"> <property name="configLocation" value="create-db.etl.xml" /> <property name="progressIndicator"><ref local="progress" /></property> <property name="autostart" value="true" /> <!-- Etl will be run during app context initialization --> </bean>

Para detalles adicionales vea el ejemplo de Spring .


El motor CloverETL es fácilmente integrable y extensible, por lo que puede escribir su propia conexión y conectarlo a CLoverETL. El objeto DBConnection se cambiará ligeramente en CloverETL 3.1, para ser más extensible y la implementación de su descendiente, que usa DataSource para la conexión a la base de datos, será como un juego de niños.