zoukankan      html  css  js  c++  java
  • ETL-kettle通过java代码传递参数,调用job调用转换

    定义变量,以表输入为例,定义变量名称为${变量名},这里用test为变量名。并且勾选sql语句变量

    package demo;
    
    import org.pentaho.di.core.KettleEnvironment;
    import org.pentaho.di.core.database.DatabaseMeta;
    import org.pentaho.di.core.exception.KettleException;
    import org.pentaho.di.job.Job;
    import org.pentaho.di.job.JobMeta;
    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 KettleTest {
        public static void runWithDb() throws Exception {
            KettleEnvironment.init();
            //创建DB资源库
            KettleDatabaseRepository repository=new KettleDatabaseRepository();
            DatabaseMeta databaseMeta=new DatabaseMeta("kettle","mysql","jdbc","localhost","kettle_repository","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("测试随机数",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");
    //        }
            // 选择job 这里采用job
            JobMeta jobMeta = repository.loadJob("random", directoryInterface, null, null);
            Job job = new Job(repository, jobMeta);
            // 向Job 脚本传递参数,脚本中获取参数值:${参数名}
            // job.setVariable(paraname, paravalue);
            job.setVariable("test", "jing_vehicle_result_mapping");    //变量名称key-value
            job.start();
            job.waitUntilFinished();
            if (job.getErrors() > 0) {
                throw new Exception(
                        "There are errors during job exception!(执行job发生异常)");
            }
        }
    
        public static void main(String[] args) throws Exception {
            KettleTest.runWithDb();
        }
    
    }
    

    左上角编辑中,可以查看变量名称

    然后运行代码。可以看到响应的文件就已经写入的数据。

    代码中需要引用相应的jar包

    jar包在kettle工具文件下一个叫lib的文件夹中可以查找获得。

  • 相关阅读:
    在Oracle的FORM中高亮显示鼠标点击或光标所在的行
    Attempt to refer to a unregistered pool by its alias 'MySQL'
    C#中手机号验证,邮箱验证
    Caused by: java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory
    org.apache.jasper.JasperException: /existingstudent.jsp(4,4) Invalid directive
    C#中使用cookies
    【old】简单易用的鹰眼类源代码下载
    MapGuide Tips如何限制MapGuide Ajax Viewer的缩放范围
    MapGuide应用开发系列(八)MapGuide Studio准备地图之地图(Map)
    基于MapGuide的在线WebGIS站点介绍
  • 原文地址:https://www.cnblogs.com/liclBlog/p/15349551.html
Copyright © 2011-2022 走看看