本帖最後由 mingfly 于 2013-7-9 12:10 編輯
kettle 中配置如下:
建立db資源庫:具體參考我的文章:外鍊網址已屏蔽
建立一個簡單的轉換(生成固定記錄儲存到檔案中)
例子使用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
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代碼:
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");
}
}
} 運作結果