`

java调用执行转换和作业

 
阅读更多

package com.mierx.platform.kettle;

import java.util.List;

import org.apache.log4j.Logger;
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.Repository;
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;

import com.mierx.core.modules.util.PropertiesLoader;

/**
 *
 * 交换工具
 *
 * @author gaochunhu
 * @Date: 2018-9-25 下午02:15:18
 * @version 3.5
 * @Company: mierx
 * @Copyright: Copyright © 2018 Shaanxi Tiancheng Software Co.,Ltd
 */
public class KettleUtils
{
    /**
     * 日志记录
     */
    private static Logger logger = Logger.getLogger(KettleUtils.class);
   
    private static final String kettleId = "kettle_resource";
   
    private static final String kettleName = "kettle_resource";
   
    private static final String kettleDes = "kettle_resource";
   
    /**
     * 获取数据资源库连接
     */
    private static DatabaseMeta databaseMeta = null;
   
    private static KettleDatabaseRepository repository = null;
   
    /**
     * 初始化连接数据资源库
     *
     * @Description:
     */
    protected static DatabaseMeta getDatabaseMeta()
    {
        if (null == databaseMeta)
        {
            PropertiesLoader prop = new PropertiesLoader("application.properties");
            databaseMeta =
                new DatabaseMeta("mysql", "mysql", "jdbc", prop.getProperty("host", "").trim(), prop.getProperty("db", "swtdexchang?characterEncoding=utf8")
                    .trim(), prop.getProperty("port", "3306").trim(), prop.getProperty("user", "root").trim(), prop.getProperty("pass", "mysql").trim());
        }
        return databaseMeta;
    }
   
    /**
     * 进行资源初始化
     *
     * @throws KettleException
     * @Description:
     */
    private static void init()
        throws KettleException
    {
        // 初始化环境
        KettleEnvironment.init();
        // 创建DB资源库
        repository = new KettleDatabaseRepository(); // 报异常,说一个类找不到
        DatabaseMeta databaseMeta = getDatabaseMeta();
        // 选择资源库
        KettleDatabaseRepositoryMeta kettleDatabaseRepositoryMeta = new KettleDatabaseRepositoryMeta(kettleId, kettleName, kettleDes, databaseMeta);
        repository.init(kettleDatabaseRepositoryMeta);
        // 连接资源库
        repository.connect("admin", "admin");
    }
   
    protected static List<String> findAllJobs()
        throws KettleException
    {
        // 初始化资源库信息
        init();
        // 查找作业并进行作业计划
        return null;
    }
   
    /**
     * 启动执行资源库中的作业
     *
     * @param jobName 执行作业的名称
     * @param jobPath 作业所在路径
     * @throws KettleException
     * @Description:
     */
    protected static void runRepJob(final String jobName, final String jobPath)
        throws KettleException
    {
        // 初始化资源库信息
        init();
        // 查找作业并进行作业计划
        RepositoryDirectoryInterface directory = repository.findDirectory(jobPath);
        JobMeta jobMetaRep = ((Repository)repository).loadJob(jobName, directory, null, null);
        Job job = new Job(repository, jobMetaRep);
        job.start();
        job.waitUntilFinished();
        if (job.getErrors() > 0)
        {
            logger.error(String.format("%s run Failure!", jobPath + "/" + jobName));
        }
        else
        {
            logger.info(String.format("%s run successfully!", jobPath + "/" + jobName));
        }
        repository.disconnect();
    }
   
    protected static void runRepTransform(final String transName, final String transPath)
        throws KettleException
    {
        // 初始化资源库信息
        init();
        // 查找转换并进行转化操作
        RepositoryDirectoryInterface directoryInterface = repository.findDirectory(transPath);
        // 选择转换
        TransMeta transMeta = repository.loadTransformation(transName, directoryInterface, null, true, null);
        Trans trans = new Trans(transMeta);
        trans.execute(null);
        trans.waitUntilFinished();// 等待直到数据结束
        if (trans.getErrors() > 0)
        {
            logger.error(String.format("%s run Failure!", transPath + "/" + transName));
        }
        else
        {
            logger.info(String.format("%s run successfully!", transPath + "/" + transName));
        }
        repository.disconnect();
    }
   
    // public static void main(String[] args)
    // throws KettleException
    // {
    // String jobName = "商务厅数据交换总入口";
    // String jobPath = "/商务厅数据交换";
    // runRepJob(jobName, jobPath);
   
    // String transName = "招商引资_省内实施项目表";
    // String transPath = "/商务厅数据交换/陕西省招商引资系统/省内实施项目";
    // runRepTransform(transName, transPath);
    //       
    // }
}

分享到:
评论

相关推荐

    java调用kettle中的job与转换-源码

    2. **配置Kettle环境**:确保Kettle的库文件路径、作业和转换文件路径等配置正确。如果是在企业环境中,可能还需要配置数据库连接信息,因为Kettle通常使用元数据存储Job和转换的定义。 3. **编写Java代码**:创建`...

    Java调用Kettle API执行转换和作业,Java代码生成Kettle转换。.zip

    本篇笔记主要探讨如何利用Java调用Kettle API来执行转换(Transformation)和作业(Job),以及如何通过Java代码生成Kettle转换。 首先,理解Kettle的基本概念是必要的。转换是数据清洗、转换和加载过程的逻辑单元...

    Java调用kettle转换

    #### 五、执行转换 加载完转换后,就可以创建一个`Trans`对象,并执行它: ```java Trans trans = new Trans(transMeta); ``` 为了传递参数给转换中的步骤,可以使用`execute`方法: ```java String date = ...

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

    Java可以通过调用Kettle的API来执行作业和转换。首先,需要在项目中引入Kettle的JAR库,例如`pentaho-kettle-core`和`pentaho-kettle-engine`。然后,可以使用`TransMeta`和`JobMeta`类加载作业或转换的元数据,...

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

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

    Java调用Kettle代码

    - 启动转换:调用`Trans.start()`方法执行转换。 - 监控执行:通过`TransListener`接口监听转换的进度和状态。 - 处理结果:转换完成后,可以通过`Trans.getErrors()`和`Trans.getResult()`等方法获取执行结果。 ...

    生成kettle作业的Java代码.rar

    总结起来,这个压缩包提供的Java代码示例展示了如何使用Kettle的Java API来创建和运行作业。通过这种方式,开发者可以更灵活地控制数据处理流程,特别是在复杂的企业级数据集成项目中。理解和掌握这些技术对于提高...

    java调用kettle4.2转换实例

    Java调用Kettle 4.2转换实例是一个实用的技术应用场景,尤其在大数据处理和ETL(提取、转换、加载)流程中。Kettle是一款开源的数据集成工具,也称为Pentaho Data Integration(PDI),它提供了图形化的界面来设计...

    java调用kettle需要的jar包

    Kettle提供了丰富的API,使得开发者能够方便地在Java代码中执行转换(Transformation)和作业(Job),从而实现数据提取、清洗、转换和加载等一系列复杂的数据操作。 首先,理解Java调用Kettle的核心在于引入必要的...

    java调用Kettle5.3任务

    - **执行转换和作业**:使用`Trans`和`Job`类实例化并运行它们,传递TransMeta和JobMeta对象,以及可能的参数。 4. **测试方法**:在Java代码中,可以编写测试方法来验证Kettle任务的正确性。这可能包括设置输入...

    java调用kettle的依赖包

    Java调用Kettle(Pentaho Data Integration,也称为Kettle或PDI)是一个常见的需求,特别是在集成数据处理和ETL(提取、转换、加载)流程中。Kettle是一款强大的开源数据集成工具,它提供了丰富的数据操作和转换功能...

    java调用kettle所需jar包(包含oracle和mysqljar驱动).rar

    在Java中调用Kettle时,通常会使用`TransExecutorService`或`JobExecutorService`来执行转换和作业。以下是一个简单的示例,展示如何启动一个Kettle转换: ```java import org.pentaho.di.core.KettleEnvironment; ...

    java远程调用kettle说明与代码.pdf

    Java远程调用Kettle是一种基于Java的ETL(Extract、Transform、Load)工具,能够对数据进行提取、转换、加载,以满足不同业务需求。Kettle提供了名为Carte的Web Server程序,也被称为Slave Server,启动该程序可以把...

    用java调用kettle的jar包.zip

    在Kettle中,可以将作业和转换保存为.kjb和.ktr文件,然后通过执行这些文件来运行相应的任务。 在Java中调用Kettle的jar包,我们通常会依赖Kettle的API,如`org.pentaho.di.core.KettleClientEnvironment`和`org....

    《kettle中调用java类》示例代码

    Kettle提供了丰富的转换和作业元素,能够处理各种数据源和目标,其中就包括对Java类的调用。在标题《kettle中调用java类》示例代码中,我们关注的是如何在Kettle的转换或作业中嵌入Java代码,以实现更复杂的数据处理...

    kettel从创建数据库转换到定时执行完整

    一旦转换和作业准备好,可以部署到Kettle的Job Executor Server或使用Pentaho BI Server来管理和执行。同时,Kettle提供了日志和监控功能,可以追踪作业执行状态,检查错误日志,以便于问题排查和性能优化。 总之...

    java调用kettle要用的jar包

    Java调用Kettle是将Java程序与Pentaho Kettle(也称为Kettle或 Spoon)集成,以便在Java环境中执行Kettle的作业(Job)和转换(Transformation)。Kettle是一款强大的ETL(提取、转换、加载)工具,它提供了一种图形...

    java调用Kettle引用jar包.zip

    1. `kettle-engine.jar`: 包含Kettle引擎,用于执行转换和作业。 2. `kettle-core.jar`: 提供Kettle的基础类和接口。 3. `kettle-api.jar`: 提供API接口,使得与其他系统交互成为可能。 4. `kettle-database.jar`: ...

    java调用WPS或pdfcreator的com接口实现doc转pdf

    - 最后,执行转换操作并保存结果。 6. **示例代码**: ```java import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; public class DocToPdfConverter { public static void main...

Global site tag (gtag.js) - Google Analytics