kettle应用程序集成代码


package com.zjhcsoft.kettle.test;

import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.logging.CentralLogStore;
import org.pentaho.di.core.logging.Log4jBufferAppender;
import org.pentaho.di.core.plugins.PluginRegistry;
import org.pentaho.di.core.plugins.RepositoryPluginType;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.RepositoriesMeta;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.repository.RepositoryMeta;
import org.pentaho.di.repository.StringObjectId;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;

public class TestKettle {

/**
* 执行转换方法--执行文件类型方式
* @author twr_wjz
* @date 2011-11-17
* @param filename 转换文件路径
* @throws Exception
*/
public void runFileTransformation(String filename) {
try {
// 运行环境初始化(设置主目录、注册必须的插件等)
KettleEnvironment.init();
EnvUtil.environmentInit();
//获取转换
TransMeta transMeta = new TransMeta(filename);
Trans trans = new Trans(transMeta);
// 执行指定转换You can pass arguments instead of null.
trans.execute(null);
// 等待转换执行结束
trans.waitUntilFinished();
/*
* 抛出异常
*/
if ( trans.getErrors() > 0 )
{
throw new RuntimeException( "转换执行期间有错误。" );
}
}
catch ( KettleException e ) {
// TODO Put your exception-handling code here.
System.out.println(e);
}
}
/**
* 执行转换方法--连接资源库方式
* @author twr_wjz
* @date 2011-11-17
* @param repID 资源库ID,如:1 ----建立资源库时,填写字段
* @param transformationID 转换ID--对应数据库中表r_transformation的ID_TRANSFORMATION
* @param transformationVersion 转换版本--对应数据库中表r_transformation的TRANS_VERSION
* @throws Exception
*/
/**
* @param repID
* @param transformationID
* @param transformationVersion
*/
public void runRepTransformation(String repID,String transformationID,String transformationVersion) {
try {
// 运行环境初始化(设置主目录、注册必须的插件等)
KettleEnvironment.init();
RepositoriesMeta repositoriesMeta = new RepositoriesMeta();
// 从文件读取登陆过的资源库信息
repositoriesMeta.readData();
// 选择登陆过的资源库
RepositoryMeta repositoryMeta = repositoriesMeta.findRepository(repID);
// 获得资源库实例
Repository repository = PluginRegistry.getInstance().loadClass(RepositoryPluginType.class, repositoryMeta.getId(), Repository.class);
repository.init(repositoryMeta);
// 连接资源库
repository.connect("admin", "admin");
//设置转换ID
ObjectId id = new StringObjectId(transformationID);
//获取转换
TransMeta transMeta = repository.loadTransformation(id,transformationVersion);
Trans trans = new Trans(transMeta);
// 执行指定转换You can pass arguments instead of null.
trans.execute(null);
// 创建打印日志类
Log4jBufferAppender appender = CentralLogStore.getAppender();
// 等待转换执行结束
trans.waitUntilFinished();
//获取转换中的IU步骤
//InsertUpdate insertUpdate = (InsertUpdate)trans.findBaseSteps("IU").get(0);
//String logText = appender.getBuffer(insertUpdate.getLogChannelId(), false).toString();
//System.out.println("日志打印开始\n"+logText+"\n打印日志结束。\n");
// 回收打印日志类
// CentralLogStore.discardLines(trans.getLogChannelId(),false);
/*
* 抛出异常
*/
if ( trans.getErrors() > 0 )
{
throw new RuntimeException( "转换执行期间有错误。" );
}
repository.disconnect();
}
catch ( KettleException e ) {
// TODO Put your exception-handling code here.
System.out.println(e);
}
}
/**
* @param args
*/
public static void main(String[] args) {

// TODO Auto-generated method stub
TestKettle testKettle = new TestKettle();
// testKettle.runFileTransformation("C:/111.ktr");
System.out.println(System.getProperty("user.dir"));
System.out.println(System.getProperty("KETTLE_HOME"));
System.setProperty("user.dir", "E:/myeclipseworkspace/testkettle/kettleconfig");
System.setProperty("KETTLE_HOME", "E:/myeclipseworkspace/testkettle/kettleconfig");
System.out.println(System.getProperty("user.dir"));
System.out.println(System.getProperty("KETTLE_HOME"));
testKettle.runRepTransformation("testkettle","1","1.0");
testKettle.runRepTransformation("testkettle","2","1.0");
}

}



kettle配置目录变更后的代码配置如下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值