天天看點

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資源庫中的轉換