Java集成kettle调用trans文件_kettleutil.loadtrans_qklwdd6的博客-程序员资料

技术标签: Java  kettle  

1.调用本地文件

public static void runNativeTransformation(String[] params,String filename) {
        try {
            //初始化
            KettleEnvironment.init();
            EnvUtil.environmentInit();
            TransMeta transMeta = new TransMeta(filename);
            //转换
            Trans trans = new Trans(transMeta);
            //执行
            trans.execute(params); // You can pass arguments instead of null.
            //等待结束
            trans.waitUntilFinished();
            if ( trans.getErrors() > 0 ){
                throw new RuntimeException( "There were errors during transformation execution." );
            }
        }
        catch (KettleException e ) {
            // TODO Put your exception-handling code here.
            System.out.println(filename);
            System.out.println("-------------------------------------------------");
            System.out.println(e);
        }
    }

2.调用资源库文件(两种,思路是一样)
第一种:

public static void runRepositoryTransformation(String filename){
    String repositoryName = "kettle_repository";
        String repositoryPassword = "admin";
        String repositoryUserName = "admin";    
    try{
        KettleEnvironment.init();
        EnvUtil.environmentInit();

         RepositoriesMeta repositoriesMeta = new RepositoriesMeta();
         repositoriesMeta.readData();                                   //资源库元数据都在Repositories.xml中,该方法用来读取
         RepositoryMeta repositoryMeta = repositoriesMeta.findRepository(repositoryName);
         PluginRegistry registry = PluginRegistry.getInstance();                          //获得资源库对象
         Repository repository =registry.loadClass(RepositoryPluginType.class,repositoryMeta,Repository.class);
         repository.init(repositoryMeta);
         repository.connect(repositoryUserName,repositoryPassword);
         RepositoryDirectoryInterface directory = repository.findDirectory("/test");   //资源库中文件夹名称
         TransMeta transformationMeta = ((Repository) repository).loadTransformation(filename, directory, null, true, null ) ;
         Trans trans = new Trans(transformationMeta);
         trans.execute(null);
         trans.waitUntilFinished();
         if ( trans.getErrors() > 0 ){
             throw new RuntimeException( "There were errors during transformation execution." );
         }
     } catch (KettleException e) {
            e.printStackTrace();
       }
}

第二种:

public static void runRepositoryTransformation(String filename){
        String repositoryXML="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                "<connection>" +
                "<name>kettle_repository</name>" +
                "<server>192.168.1.124</server>" +
                "<type>Mysql</type>" +
                "<access>Native</access>" +
                "<database>kettle_repository</database>" +
                "<port>3306</port>" +
                "<username>root</username>" +
                "<password>123456</password>" +
                "</connection>";
        String repositoryName = "kettle_repository";
        String repositoryPassword = "admin";
        String repositoryUserName = "admin";
        try {
                KettleEnvironment.init();
                EnvUtil.environmentInit();
        KettleDatabaseRepository repository = new KettleDatabaseRepository();
//              DatabaseMeta dataMeta =
//                    new DatabaseMeta("kettle_repository","MySQL","JDBC","192.168.1.124","kettle_repository","3306","root","123456");
                DatabaseMeta dataMeta =
                    new DatabaseMeta(repositoryXML);
                KettleDatabaseRepositoryMeta kettleDatabaseMeta =
                    new KettleDatabaseRepositoryMeta("kettle_repository", "kettle_repository", "king description",dataMeta);
                repository.init(kettleDatabaseMeta);
                repository.connect("admin","admin");
                RepositoryDirectoryInterface directory = repository.findDirectory("/test");   //资源库中文件夹名称
                TransMeta transformationMeta = ((Repository) repository).loadTransformation(filename, directory, null, true, null ) ;
                Trans trans = new Trans(transformationMeta);
                trans.execute(null);
                trans.waitUntilFinished();
                if ( trans.getErrors() > 0 ){
                    throw new RuntimeException( "There were errors during transformation execution." );
                }
        } catch (KettleException e) {
            e.printStackTrace();
        }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qklwdd6/article/details/70740479

智能推荐

记一个好用的xshell替代工具-mobaxterm_小豆角的博客-程序员资料

https://zhuanlan.zhihu.com/p/56341917现今软件市场上有很多终端工具,比如:secureCRT、Putty、telnet,等等。secureCRT其实也是一款很强大的终端工具,良许也使用过它很长时间,但是,它毕竟是收费软件,在公司里不允许使用。而且在良许自己的电脑里一量输入大写,整个界面就乱了(原因未知,未深究),这是直接导致良许放弃它的原因。而Pu...

大数据Hive(一):​​​​​​​Hive基本概念_hive大数据_Lansonli的博客-程序员资料

全网最详细的Hive文章系列,强烈建议收藏加关注!后面更新文章都会列出历史文章目录,帮助大家回顾知识重点。目录历史文章前言Hive基本概念一、Hive介绍1、什么是Hive​​​​​​​2、为什么使用Hive​​​​​​​3、Hive的特点二、Hive架构1、架构图​​​​​​​2、基本组成​​​​​​​3、Hive与传统数据库对比历史文章深夜凌晨女朋友问什么是数据仓库,我的回答让她惊讶,然后发现。。。百度、阿里、腾讯平台架构都熟悉,小米大.

VxWorks 启动顺序_yz2010的博客-程序员资料

1)romInit(),位于romInit.s文件中,功能如下A)初始化CPU,部分内存,基本的硬件。如果初始化正确,则内存LOCAL_MEM_LOCAL_ADRS到LOCAL_MEM_LOCAL_ADRS+LOCAL_MEM_SIZE是可读可写的。B)禁止中断,清除CACHE,为下一个函数romStart(位于bootInit.c中)的执行配置启动类型。2)romStart()位于bootIni...

Tesseract-OCR安装教程_tesseract ocr安装教程官网_Snow_2018的博客-程序员资料

这个教程也是从其他多篇文章综合起来,然后写的更详细。Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所获得...

漏洞解决方案-跨站请求伪造漏洞_rel~smart的博客-程序员资料

跨站请求伪造漏洞CSRF跨站请求伪造漏洞CSRF一、问题描述:二、整改建议:三、案例:1. 客户端进行CSRF防御2. 服务端进行CSRF防御跨站请求伪造漏洞CSRF一、问题描述:CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,

逻辑漏洞——权限控制问题_权限控制 主体 客体_告诉桃花不用开了的博客-程序员资料

普及权限控制的方法、常见非授权访问漏洞以及水平越权与垂直越权的成因与利用方法、修复方法权限控制某个主体(subject)对某个客体(object)需要实施某种操作(operation),系统对这种操作的限制就是权限控制。在一个安全的系统中,通过身份验证来确认主体的身份。客体是一种资源,是主体发起请求的对象。主体所能做什么,就是权限,权限可以细分为不同的能力。例如:在Linux文件系统中,将权限分为读、写、执行三种能力。 权限控制一般分为两个步骤,身份验证与授权。首先进行的是身份验证的工作...

随便推点

执行main方法时出现java.lang.SecurityException异常_live_and_learn_CC的博客-程序员资料

1.执行main方法时弹出 Error: A JNI error has occurred, please check your installation and try againe2.执行后控制台报的错误3.进入ClassLoader.java中,4.原因:在开始执行main方法时就已经加载了以java开头的包路径,所有类加载器在加载文件时会抛出异常5.解决方法:改包...

【opencv】goodFeaturesToTrack源码分析-2-Shi-Tomasi角点检测_Denny#的博客-程序员资料

本文章是【opencv】goodFeaturesToTrack源码分析-1的后续,主要描述Shi-Tomasi角点检测算法原理及opencv实现。1、算法原理Shi-Tomasi算法是Harris算法的改进,在Harris算法中,是根据协方差矩阵M的两个特征值的组合来判断是否角点。而在Shi-Tomasi算法中,是根据较小的特征值是否大于阈值来判断是否角点。 这个判断依据是:较小的特征值表示在该特

tensorflow源码例子mnist源码——mnist.py_修炼打怪的小乌龟的博客-程序员资料

# Copyright 2015 The TensorFlow Authors. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# Y

8.2.mysql数据表设计_qq_28613081的博客-程序员资料

mysql数据表设计课程内容性能优化介绍与影响因素问题发现-1. Linux管道机制 命令linux系统搭建省略:管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这一特点决定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特点:*** 数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要...

深度学习和自然语言处理中的attention和memory机制_noter16的博客-程序员资料

深度学习和自然语言处理中的attention和memory机制