java调用kettle---调用本地Job和Trans

import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.kdr.KettleDatabaseRepository;
import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;
public class MyUtils {

public static void main(String[] args) {

    String[] params = {"1","content","d:\\test1.txt"};
    runTransfer(params, "D:\\kettle\\test.ktr");
}

/**  
 * 运行转换文件方法 
 * @param params 多个参数变量值 
 * @param ktrPath 转换文件的路径,后缀ktr
 */  
public static void runTransfer(String[] params, String ktrPath) {  
    Trans trans = null;  
    try {  
        // // 初始化  
        // 转换元对象  
        KettleEnvironment.init();// 初始化  
        EnvUtil.environmentInit();  
        TransMeta transMeta = new TransMeta(ktrPath);  
        // 转换  
        trans = new Trans(transMeta);  
          
        // 执行转换  
        trans.execute(params);  
        // 等待转换执行结束  
        trans.waitUntilFinished();  
        // 抛出异常  
        if (trans.getErrors() > 0) {  
            throw new Exception(  
                    "There are errors during transformation exception!(传输过程中发生异常)");  
        }  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  
}  

/** 
 * java 调用 kettle 的job 
 *  
 * @param jobname 
 *            如: String fName= "D:\\kettle\\informix_to_am_4.ktr"; 
 */  
public static void runJob(String[] params, String jobPath) {  
    try {  
        KettleEnvironment.init();  
        // jobname 是Job脚本的路径及名称  
        JobMeta jobMeta = new JobMeta(jobPath, null);  
        Job job = new Job(null, jobMeta);  
        // 向Job 脚本传递参数,脚本中获取参数值:${参数名}  
        // job.setVariable(paraname, paravalue);  
        job.setVariable("id", params[0]);  
        job.setVariable("content", params[1]);  
        job.setVariable("file", params[2]);  
        job.start();  
        job.waitUntilFinished();  
        if (job.getErrors() > 0) {  
            throw new Exception(  
                    "There are errors during job exception!(执行job发生异常)");  
        }  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  
}  

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java调用Kettle,你需要遵循以下步骤: 1. 首先,确保你已经安装了Kettle(Pentaho Data Integration)并配置好了环境。 2. 在Java项目中添加Kettle的依赖。你可以使用Maven或手动导入JAR文件。Kettle的JAR文件通常位于Kettle安装目录的lib文件夹下。 3. 创建一个Java类,并导入Kettle相关的类库。例如,你可能需要导入org.pentaho.di.trans.TransMeta、org.pentaho.di.job.JobMeta等。 4. 在Java代码中,你可以使用Kettle的API来读取和执行转换(Transformation)和作业(Job)。以下是一个简单的示例代码: ```java import org.pentaho.di.core.KettleEnvironment; import org.pentaho.di.trans.Trans; import org.pentaho.di.trans.TransMeta; public class KettleExample { public static void main(String[] args) { try { // 初始化Kettle环境 KettleEnvironment.init(); // 创建转换元数据对象 TransMeta transMeta = new TransMeta("path/to/your/transformation.ktr"); // 创建转换对象 Trans trans = new Trans(transMeta); // 执行转换 trans.execute(null); trans.waitUntilFinished(); if (trans.getErrors() > 0) { System.out.println("转换执行过程中发生错误!"); } else { System.out.println("转换执行成功!"); } } catch (Exception e) { e.printStackTrace(); } } } ``` 在上述示例中,你需要将"path/to/your/transformation.ktr"替换为你实际的转换文件路径。 请注意,这只是一个简单的示例,实际情况可能会更复杂。你可能还需要处理参数、获取转换结果等。 希望对你有所帮助!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值