自己在做集成时,网上信息都是零散的,在这里汇总一下,加一些自己的想法。
这里要实现一个简单的对库对表数据交换,并实现灵活可配置。
根据Kettle转化的特性,仅需要配置以下几个属性:
1.输入输出数据库属性
2.输入输出表名,输出数据表数据池,可设计灵活配置SQL限制范围。
3.字符串数组形式的输入输出表字段。
集成步骤
一,引入jar包
Maven仓库:kettle中央仓库里没有,需要单独在pom文件中引入。
<repositories><!-- kettle中央仓库 -->
<repository>
<id>pentaho-public</id>
<name>Pentaho Public</name>
<url>http://nexus.pentaho.org/content/groups/omni</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
依赖注入:
<!-- kettle ETL 相关 start -->
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-engine</artifactId>
<version>${kettle.version}</version>
</dependency>
<dependency>
<groupId>pentaho</groupId>
<artifactId>metastore</artifactId>
<version>${kettle.version}</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-core</artifactId>
<version>${kettle.version}</version>
<exclusions>
<exclusion>
<groupId>jug-lgpl</groupId>
<artifactId>jug-lgpl</artifactId>
</exclusion>
<exclusion>
<groupId>secondstring</groupId>
<artifactId>secondstring</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<artifactId>xercesImpl</artifactId>
<groupId>xerces</groupId>
</exclusion>
<exclusion>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-js</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-dbdialog</artifactId>
<version>${kettle.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>
<dependency>
<groupId>com.verhas</groupId>
<artifactId>license3j</artifactId>
<version>1.0.7</version>
</dependency>
<!-- kettle ETL 相关 end -->
二,Kettle二次开发简述
参考自:https://blog.csdn.net/abcdefg367/article/details/84755435。
ktr文件:执行Kettle处理数据分为两步,
1.配置数据处理文件规则,导入导出,数据清洗等。
2.使用KettleEnvironment.init();初始化Kettle的运行环境。
3.使用TransMeta转化配置。
简单的数据交换转化,看代码,相比于参考文章,加了点代码注释。
import org.apache.commons.io.FileUtils;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleDatabaseException;
import org.pentaho.di.core.exception.KettleXMLException;
import org.pentaho.di.core.plugins.PluginRegistry;
import org.pentaho.di.core.plugins.StepPluginType;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransHopMeta;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.steps.insertupdate.InsertUpdateMeta;
import org.pentaho.di.trans.steps.tableinput.TableInputMeta;
import java.io.File;
public class TransDemo {
public static TransDemo transDemo;
// from-表名
public static String from_tablename = "tabletest";
// from-表主键,集合模式,可以多主键
public static