Kettle与Java集成——Java代码调取运行资源库的Transformation

下面代码是Java代码调用Kettle4.0版本的Transformation

1Java读取资源库运行Transformation

(1)目录类型资源库Java代码

			import org.pentaho.di.core.KettleEnvironment;
			import org.pentaho.di.core.exception.KettleException;
			import org.pentaho.di.repository.filerep.KettleFileRepository;
			import org.pentaho.di.repository.filerep.KettleFileRepositoryMeta;
			import org.pentaho.di.trans.Trans;
			import org.pentaho.di.trans.TransMeta;
			public class ReaderTransFromRep {
				private static String tranName = "IM_KSDM";    // 传输名称
				public static void main(String[] args) throws KettleException {
					Trans trans=null;
					try {
						// 初始化
						KettleEnvironment.init();这个是4.0版本的初始化,和3.x版本的不同
						// 资源库元对象
						KettleFileRepositoryMeta repinfo = new KettleFileRepositoryMeta("","","数据采集","file:///E:/Workspaces/Kettle");
						// 文件形式的资源库
						KettleFileRepository rep = new KettleFileRepository();
						rep.init(repinfo);
						// 转换元对象
						if(tranName!=null){
							TransMeta transMetadel = rep.loadTransformation(rep.getTransformationID(tranName, null), null);
							// 转换
							trans = new Trans(transMetadel);
							// 执行转换
							trans.execute(null); 
							// 等待转换执行结束
							trans.waitUntilFinished();
							//抛出异常
							if(trans.getErrors()>0){
								throw new Exception("There are errors during transformation exception!(传输过程中发生异常)");
							}
						}else{
							throw new KettleException("传输名为空!");
						}
					} catch (Exception e) {
						if(trans!=null){
							trans.stopAll();
						}
						e.printStackTrace();
						throw new KettleException(e);
					}
				}
                         }


 
 
 

(2)数据库类型资源库

			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.RepositoryDirectory;
			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 ReaderTransFromDBRep {
				private static String transName="t1";
				public static void main(String[] args) {
					
					try {
						KettleEnvironment.init();
						DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep","MSSQL","Native","127.0.0.1","etl","1433","sa","bsoft");
						KettleDatabaseRepositoryMeta repInfo = new KettleDatabaseRepositoryMeta();
						repInfo.setConnection(dataMeta);
						KettleDatabaseRepository rep = new KettleDatabaseRepository();
						rep.init(repInfo);
						rep.connect("admin", "admin");
						
						RepositoryDirectoryInterface dir = new RepositoryDirectory();
						dir.setObjectId(rep.getRootDirectoryID());
						
						TransMeta tranMeta = rep.loadTransformation(rep.getTransformationID(transName, dir), null);
						Trans trans = new Trans(tranMeta);
						trans.execute(null);
						trans.waitUntilFinished();
					} catch (KettleException e) {
						e.printStackTrace();
					}
				}
			}


 
 

                
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值