zoukankan      html  css  js  c++  java
  • Kettle api 二次开发之 日志的保存

      

    使用kettle做数据抽取的时候可以使用图形化的工具配置日志保存参数,选择数据库连接,输入日志表名称,

    点击sql 执行对应的sql创建日志表即可。

    点击保存之后,日志配置会保存在trans或者job的配置文件中。这样当使用api调取trans或者job配置文件进行数据抽取的时候就会自动把转换日志存储到配置的数据表中。

    然而在实际应用中这意味着工作量增大。所以我们的想法是创建固定的表,在执行转换的过程中自动配置日志保存路径。

    这里以trans为例,job类似。

    代码:

    初始化DatabaseMate:

            private String name;
        private String type;
        private String access;
        private String hostname;
        private String DBName;
        private String DBPort;
        private String username;
        private String password;
        private String servername;
    
    
            DatabaseMeta databaseMeta = new DatabaseMeta(name, type, access, hostname, DBName, DBPort, username, password);
                 

    初始化Trans

    TransMeta transMeta = new TransMeta("L:\ETL\ceshi\1.ktr");
    Trans trans = new Trans(transMeta);

    给Trans添加数据源

    --添加到元数据上

    transMeta.addDatabase(etlLogDatabaseMeta);

    设置channellogtable

    VariableSpace space = new Variables();    
                //将step日志数据库配置名加入到变量集中    
                space.setVariable("kettle_log","logdb");  
                space.initializeVariablesFrom(null);    
              
                
                ChannelLogTable channelLogTable = ChannelLogTable.getDefault(space, transMeta);
                channelLogTable.setConnectionName("logdb");  
                channelLogTable.setTableName("log_trans_channel");
                transMeta.setChannelLogTable(channelLogTable);

    执行trans

    trans.execute(null); // You can pass arguments instead of null.
                trans.waitUntilFinished();
                if (trans.getErrors() > 0) {
                    throw new RuntimeException(
                            "There were errors during transformation execution.");
                }

     这样就可以保存到指定表中了。

     当然做这些事情之前要

    KettleEnvironment.init();
  • 相关阅读:
    解决-webkit-box-orient: vertical;(文本溢出)属性在webpack打包后无法编译的问题
    消息框尖尖
    表单提交
    昨天看了一个大神的fix类,清晰了然
    使用cross-env解决跨平台设置NODE_ENV的问题
    axios 在Vue全局引入的方法
    vue自定义指令
    AMD/CMD/CommonJs到底是什么?它们有什么区别?
    artDialog.js的使用
    delegate-使用笔记
  • 原文地址:https://www.cnblogs.com/Leechg/p/7195859.html
Copyright © 2011-2022 走看看