天天看点

java执行kettle_使用java调用Kettle资源库中的转换

本帖最后由 mingfly 于 2013-7-9 12:10 编辑

kettle 中配置如下:

创建db资源库:具体参考我的帖子:外链网址已屏蔽

创建一个简单的转换(生成固定记录保存到文件中)

java执行kettle_使用java调用Kettle资源库中的转换
java执行kettle_使用java调用Kettle资源库中的转换

例子使用Maven构建

4.0.1-GA

pentaho.kettle

kettle-core

${pentaho.kettle.version}

pentaho.kettle

kettle-db

${pentaho.kettle.version}

pentaho.kettle

kettle-engine

${pentaho.kettle.version}

pentaho.kettle

kettle-ui-swt

${pentaho.kettle.version}

pentaho-library

libformula

1.1.7

org.codehaus.janino

janino

2.5.16

rhino

js

1.7R2

javax.mail

mail

1.4.1

mysql

mysql-connector-java

5.1.17

log4j

log4j

1.2.17

mons

kettle-vfs-20100924

20100924

commons-httpclient

commons-httpclient

3.1

这里特别要注意mons的kettle-vfs-20100924 这个要手动加入,之前在公网的Maven Reponsitory找不到相应的包。kettle-vfs-20100924.jar存在{path}\data-integration\libext\pentaho中。

java执行kettle_使用java调用Kettle资源库中的转换

环境配置好之后开始撰写Java代码:

package com.zhuheng.kettle;

import org.pentaho.di.core.KettleEnvironment;

import org.pentaho.di.core.database.DatabaseMeta;

import org.pentaho.di.core.exception.KettleException;

import org.pentaho.di.repository.RepositoryDirectoryInterface;

import org.pentaho.di.repository.kdr.KettleDatabaseRepository;

import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;

import org.pentaho.di.trans.Trans;

import org.pentaho.di.trans.TransMeta;

public class KettleMain {

public static void main(String[] args) throws KettleException {

//初始化环境

KettleEnvironment.init();

//创建DB资源库

KettleDatabaseRepository repository=new KettleDatabaseRepository();

DatabaseMeta databaseMeta=new DatabaseMeta("Kettle_MySQL","mysql","jdbc","localhost","kettle","3306","root","root");

//选择资源库

KettleDatabaseRepositoryMeta kettleDatabaseRepositoryMeta=new KettleDatabaseRepositoryMeta("Kettle","Kettle","Transformation description",databaseMeta);

repository.init(kettleDatabaseRepositoryMeta);

//连接资源库

repository.connect("admin","admin");

RepositoryDirectoryInterface directoryInterface=repository.loadRepositoryDirectoryTree();

//选择转换

TransMeta transMeta=repository.loadTransformation("test",directoryInterface,null,true,null);

Trans trans=new Trans(transMeta);

trans.execute(null);

trans.waitUntilFinished();//等待直到数据结束

if(trans.getErrors()>0){

System.out.println("transformation error");

}else{

System.out.println("transformation successfully");

}

}

} 运行结果

java执行kettle_使用java调用Kettle资源库中的转换
java执行kettle_使用java调用Kettle资源库中的转换