本帖最后由 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");
}
}
} 运行结果