• java调用kettle_导入jar包(1)


    Java调用Kettle执行任务或转换,需要使用Kettle中的jar,可以先导入lib目录中的几个基本的jar,如:kettle-core.jar、kettle-db.jar、kettle-engine.jar ,其它jar根据情况进行添加,所需的jar在<kettle-home>lib、<kettle-home>libext下面都可以找到,本示例引用的jar如下图:

    之后编写代码测试Java调用,调用前先使用Kettle的设计器设计了一个转换,取名为voucher.ktr。另外,本示例使用的是Kettle3.2的版本,据说4.1版本调用方法会有不同。

    1. import org.pentaho.di.core.database.DatabaseMeta;  
    2. import org.pentaho.di.core.exception.KettleException;  
    3. import org.pentaho.di.core.logging.LogWriter;  
    4. import org.pentaho.di.core.util.EnvUtil;  
    5. import org.pentaho.di.job.Job;  
    6. import org.pentaho.di.job.JobEntryLoader;  
    7. import org.pentaho.di.job.JobMeta;  
    8. import org.pentaho.di.repository.Repository;  
    9. import org.pentaho.di.repository.RepositoryDirectory;  
    10. import org.pentaho.di.repository.RepositoryMeta;  
    11. import org.pentaho.di.repository.UserInfo;  
    12. import org.pentaho.di.trans.StepLoader;  
    13. import org.pentaho.di.trans.Trans;  
    14. import org.pentaho.di.trans.TransMeta;  
    15.   
    16. /** 
    17.  * Java调用Kettle示例代码 
    18.  *  
    19.  * @author 李文锴 
    20.  * @since 2012-8-14 下午03:50:00 
    21.  *  
    22.  */  
    23. public class KettleTest {  
    24.   
    25.     public static void main(String[] args) throws KettleException {  
    26.         String filename = "voucher.ktr";  
    27.         // callNativeTrans(filename);  
    28.         // executeTrans();  
    29.         // executeJobs();  
    30.         callNativeTransWithParam(filename);  
    31.         System.out.println("ok");  
    32.     }  
    33.   
    34.     /** 
    35.      * 调用本地的转换文件 
    36.      *  
    37.      * @Description: 
    38.      * @param transFileName 
    39.      * @throws KettleException 
    40.      * @author 李文锴 
    41.      * @since:2012-8-15 下午02:58:41 
    42.      */  
    43.     public static void callNativeTrans(String transFileName) throws KettleException {  
    44.         // 初始化  
    45.         EnvUtil.environmentInit();  
    46.         StepLoader.init();  
    47.         // 转换元对象  
    48.         TransMeta transMeta = new TransMeta(transFileName);  
    49.         // 转换  
    50.         Trans trans = new Trans(transMeta);  
    51.         // 执行转换  
    52.         trans.execute(null);  
    53.         // 等待转换执行结束  
    54.         trans.waitUntilFinished();  
    55.     }  
    56.   
    57.     /** 
    58.      * 调用本地的转换文件(带参数) 
    59.      *  
    60.      * @Description: 
    61.      * @param transFileName 
    62.      * @throws KettleException 
    63.      * @author 李文锴 
    64.      * @since:2012-8-15 下午02:58:54 
    65.      */  
    66.     public static void callNativeTransWithParam(String transFileName) throws KettleException {  
    67.         // 初始化  
    68.         EnvUtil.environmentInit();  
    69.         StepLoader.init();  
    70.         // 转换元对象  
    71.         TransMeta transMeta = new TransMeta(transFileName);  
    72.         // 转换  
    73.         Trans trans = new Trans(transMeta);  
    74.         String[] params = {};  
    75.         // 执行转换  
    76.         trans.execute(params);  
    77.         // 等待转换执行结束  
    78.         trans.waitUntilFinished();  
    79.   
    80.     }  
    81.   
    82.     /** 
    83.      * 执行存储在数据库资源库中的转换 
    84.      *  
    85.      * @Description: 
    86.      * @throws KettleException 
    87.      * @author 李文锴 
    88.      * @since:2012-8-15 下午02:59:14 
    89.      */  
    90.     public static void executeTrans() throws KettleException {  
    91.         // 初始化  
    92.         EnvUtil.environmentInit();  
    93.         StepLoader.init();  
    94.         // 日志  
    95.         LogWriter log = LogWriter.getInstance("TransTest.log", true, LogWriter.LOG_LEVEL_DEBUG);  
    96.         // 用户  
    97.         UserInfo userInfo = new UserInfo();  
    98.         userInfo.setLogin("admin");  
    99.         userInfo.setPassword("admin");  
    100.         // 数据库连接元对象(连接名称,不必与kettle中配置的保持一致:数据库类型:连接方式(kettle支持的连接方式):资源库IP:资源库实例名:资源库端口:资源库用户名:资源库用户密码)  
    101.         DatabaseMeta connection = new DatabaseMeta("", "Oracle", "Native", "192.168.3.232", "NSDEV", "1521", "nstcsa3441", "671468");  
    102.         // 资源库元对象  
    103.         RepositoryMeta repinfo = new RepositoryMeta();  
    104.         repinfo.setConnection(connection);  
    105.         // 资源库  
    106.         Repository rep = new Repository(log, repinfo, userInfo);  
    107.         // 连接资源库  
    108.         rep.connect("");  
    109.         // 资源库目录对象  
    110.         RepositoryDirectory dir = new RepositoryDirectory(rep);  
    111.         // 转换元对象  
    112.         TransMeta transMeta = new TransMeta(rep, "凭证(N9->EVC2)", dir);  
    113.         // 转换  
    114.         Trans trans = new Trans(transMeta);  
    115.         // 执行转换  
    116.         trans.execute(null);  
    117.         // 等待转换执行结束  
    118.         trans.waitUntilFinished();  
    119.     }  
    120.   
    121.     /** 
    122.      * 执行本地的任务文件 
    123.      *  
    124.      * @Description: 
    125.      * @param jobFileName 
    126.      * @throws KettleException 
    127.      * @author 李文锴 
    128.      * @since:2012-8-15 下午02:59:34 
    129.      */  
    130.     public static void callNativeJob(String jobFileName) throws KettleException {  
    131.         // 初始化  
    132.         EnvUtil.environmentInit();  
    133.         JobEntryLoader.init();  
    134.         StepLoader.init();  
    135.         // 日志  
    136.         LogWriter log = LogWriter.getInstance("TransTest.log", true, LogWriter.LOG_LEVEL_DETAILED);  
    137.         // job元对象  
    138.         JobMeta jobMeta = new JobMeta(log, jobFileName, null);  
    139.         // job  
    140.         Job job = new Job(log, StepLoader.getInstance(), null, jobMeta);  
    141.         jobMeta.setInternalKettleVariables(job);  
    142.         // 执行job  
    143.         job.execute();  
    144.         // 等待job执行结束  
    145.         job.waitUntilFinished();  
    146.     }  
    147.   
    148.     /** 
    149.      * 执行数据库资源库中的任务 
    150.      *  
    151.      * @Description: 
    152.      * @throws KettleException 
    153.      * @author 李文锴 
    154.      * @since:2012-8-15 下午02:59:45 
    155.      */  
    156.     public static void executeJobs() throws KettleException {  
    157.         // 初始化  
    158.         EnvUtil.environmentInit();  
    159.         JobEntryLoader.init();  
    160.         StepLoader.init();  
    161.         // 日志  
    162.         LogWriter log = LogWriter.getInstance("TransTest.log", true, LogWriter.LOG_LEVEL_DETAILED);  
    163.         // 用户  
    164.         UserInfo userInfo = new UserInfo();  
    165.         userInfo.setLogin("admin");  
    166.         userInfo.setPassword("admin");  
    167.         // 数据库连接元对象  
    168.         DatabaseMeta connection = new DatabaseMeta("", "Oracle", "Native", "192.168.3.232", "NSDEV", "1521", "nstcsa3441", "671468");  
    169.         // 资源库元对象  
    170.         RepositoryMeta repinfo = new RepositoryMeta();  
    171.         repinfo.setConnection(connection);  
    172.         // 资源库  
    173.         Repository rep = new Repository(log, repinfo, userInfo);  
    174.         // 连接资源库  
    175.         rep.connect("");  
    176.         // 资源库目录对象  
    177.         RepositoryDirectory dir = new RepositoryDirectory(rep);  
    178.         // 步骤加载对象  
    179.         StepLoader steploader = StepLoader.getInstance();  
    180.         // job元对象  
    181.         JobMeta jobmeta = new JobMeta(log, rep, "4.账户每日余额", dir);  
    182.         // job  
    183.         Job job = new Job(log, steploader, rep, jobmeta);  
    184.         // 执行job  
    185.         job.execute();  
    186.         // 等待job执行结束  
    187.         job.waitUntilFinished();  
    188.   
    189.     }  
    190.   
    191. }  


    本示例只能实现一次调用,暂时不知道如何通过API设定运行时间,但可以结合springQuartz,设定定时调度,以便实现调度目标。

    来源:http://blog.csdn.net/scorpio3k/article/details/7869196

  • 相关阅读:
    python标准库:Configparser模块
    git使用总结
    Scrapy笔记:使用scrapy shell url时出现403错误的解决办法
    Scrapy笔记:日志的使用
    Scrapy笔记:CrawSpider中rules中的使用
    django+nginx+mod_wsgi+apache网站部署
    关于URL编码 [转]
    FTP上传文件服务器python实现
    LVS高可用集群的配置
    Hadoop-hdfs安装与配置
  • 原文地址:https://www.cnblogs.com/kongxc/p/6743141.html
Copyright © 2020-2023  润新知