`

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配置目录变更后的代码配置如下
分享到:
评论

相关推荐

    kettle集成应用之---java调用执行transformation和job

    kettle是一款功能强大的数据集成工具,可以在java应用程序中集成应用,实现调用资源库上和本地的transformation和job。下面是kettle集成应用的详细知识点: 一、kettle资源库的配置 kettle中的Repository是存储元...

    java集成kettle所有jar包

    然而,在Java应用程序中集成Kettle,需要将相关的Jar包添加到项目的类路径中,以便能够调用其API来执行工作流或转换。 首先,要理解Java与Kettle的集成,我们需要知道Kettle的主要组件。Kettle由以下几部分组成: ...

    生成kettle作业的Java代码.rar

    2. 集成性:可以将Kettle作业无缝集成到现有的Java应用程序或服务中。 3. 自动化:便于自动化部署和执行,例如在持续集成/持续部署(CI/CD)流程中。 总结起来,这个压缩包提供的Java代码示例展示了如何使用Kettle...

    springboot整合kettle项目源码

    Spring Boot是Spring框架的一个扩展,它简化了创建独立的、生产级别的基于Spring的应用程序的过程。通过自动配置和“起步依赖”(Starter Dependency),Spring Boot使得开发者能够快速启动并运行一个应用,而无需...

    如何将JAVA程序集成到KETTLE中

    标题 "如何将JAVA程序集成到KETTLE中" 提示了我们,这个主题主要讨论的是如何在数据处理工具Kettle(也称为Pentaho Data Integration,简称PDI)中利用Java代码进行扩展和功能增强。Kettle是一个开源的数据集成平台...

    kettle集成jar包.rar

    JAR文件在Java应用程序中是代码的打包形式,它包含了一组类文件和其他资源。在Kettle中,JAR文件通常包含了特定的功能扩展或插件,例如自定义的数据转换步骤、连接器或者特殊功能实现。这些JAR文件被添加到Kettle的...

    java集成kettle执行作业文件.rar

    这种集成方式常用于需要在Java应用程序中触发数据处理流程的场景,例如定时任务、Web服务、批处理系统等,使得数据处理更加灵活和可控。 9. **性能优化** 考虑到性能,可以通过并发执行转换、缓存数据、优化SQL...

    kettle rabbitmq 插件开发

    RabbitMQ 是一个流行的消息队列系统,用于应用程序之间的异步通信。 描述没有提供具体细节,但我们可以假设内容可能涵盖如何结合 Kettle 和 RabbitMQ 实现数据流的发布和订阅。这通常涉及以下几个关键知识点: 1. ...

    《使用javascript访问kettle内部组件》示例代码

    而JavaScript作为一种广泛使用的脚本语言,能够与各种应用程序接口进行交互,包括Kettle的内部组件。 标题"《使用javascript访问kettle内部组件》示例代码"表明,我们将探讨如何使用JavaScript与Kettle进行交互,以...

    Java调用Kettle代码

    Kettle提供了API和执行引擎,允许外部应用程序如Java程序与其交互。通过使用Kettle的`trans`和`job` API,可以启动、监控和控制转换(Transformation)和作业(Job)的执行。Kettle的核心类库包括`kettle-engine`和...

    springboot实现kettle

    文件"KettleQuartz.java"可能包含了实现SpringBoot应用中Quartz调度器的代码,用于定时启动Kettle作业。而"pom.txt"应该是Maven的项目配置文件,其中列出了项目所依赖的库,包括Spring Boot、Kettle的Java API以及...

    java调用Kettle引用jar包.zip

    总之,Java调用Kettle通过引入相关jar包并利用其API,能够无缝地将强大的Kettle ETL功能集成到Java应用程序中,从而实现更复杂的业务逻辑和数据处理需求。这为开发人员提供了更大的灵活性,同时利用了Kettle的可视化...

    在Kettle(PDI)跑Apache Spark作业

    这种集成通常需要配置Spark连接参数,如Master URL、Spark版本、应用程序名称等。 3. **Spark作业设计**:在Kettle中,用户可以使用`Job Spark.kjb`这样的文件来定义Spark作业。作业中可能包含启动Spark Context、...

    用java调用kettle设计包含源代码

    Java调用Kettle的设计需求常见于企业级应用中,特别是在需要通过程序控制数据处理流程或自动执行特定任务时。这种方式不仅能够增强系统的灵活性,还能提高自动化程度。 #### 二、关键知识点详解 ##### 1. 初始化...

    java调用kettle的依赖包

    通过以上步骤,你可以成功地在Java应用程序中调用并执行Kettle的转换,实现数据集成和处理的需求。注意,Kettle的API文档和社区论坛是学习和解决问题的重要资源,可以在这里找到更多示例代码和实践经验。

    kettle学习资料-内有kettle程序.zip

    8. **版本控制**:Kettle可以与其他版本控制系统(如Git)集成,便于团队协作和代码版本管理,这在企业环境中尤为重要。 通过分析和运行压缩包内的15个Kettle程序,你可以深入理解Kettle的工作流程,学习如何根据...

    SpringMVC精品资源--将kettle集成值web应用中,不再需打开kettle窗口运行,采用springmv.zip

    在IT行业中,SpringMVC是一个广泛使用的Java web框架,它为构建高效、可维护的Web应用程序提供了强大的支持。本资源包“SpringMVC精品资源--将kettle集成值web应用中,不再需打开kettle窗口运行,采用springmv.zip”...

    kettle-scheduler-master_springmvc_kettlejava_kettleweb调度_kettle-

    3. **Spring MVC**:Spring MVC是Spring框架的一部分,用于构建Web应用程序。它遵循MVC模式,分离了业务逻辑、用户界面和数据访问。Spring MVC提供依赖注入、AOP(面向切面编程)、事务管理等功能,有助于简化开发和...

    java调用Kettle5.3任务

    Java调用Kettle 5.3任务是一种在Java应用程序中集成Kettle(Pentaho Data Integration,也称为ETL工具)的方式,以便利用其强大的数据转换和加载功能。以下是对这个主题的详细解释: 1. **Kettle简介**:Kettle是一...

Global site tag (gtag.js) - Google Analytics