栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

java整合kettle--实现数据定时同步

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java整合kettle--实现数据定时同步

工具:springboot,kettle核心jar包(xxl-job,jenkins,k8,docker)

实现数据库的增量同步,需要编写好kettle转换文件以配置文件的形式,整合到springboot,有改动只需要更换转换文件,不需要更新jar包,job用于灵活调整定时同步,再结合jenkins自动部署,十分方便。

1、首先用kettle画图制作转换文件,Spoon.bat启动;

2、springboot整合

结构:

依赖:

lib存放kettle的核心jar包(在kettle软件的lib里都有):

核心代码:

    public R runTrans(){
        this.runKtr(kettleConfig.getPathSupplier(),null);
        this.runKtr(kettleConfig.getPathBankInfo(),null);
        this.runKtr(kettleConfig.getPathQua(),null);
        return R.ok("转换执行成功");
    }

    
    @Override
    public R runKtr(String filename, Map params) {
        try {
            KettleEnvironment.init();
//            TransMeta tm = new TransMeta(dirPath1 + File.separator + filename);
            TransMeta tm = new TransMeta(filename);

            Trans trans = new Trans(tm);
            if (params != null) {
                Iterator> entries = params.entrySet().iterator();
                while (entries.hasNext()) {
                    Map.Entry entry = entries.next();
                    trans.setParameterValue(entry.getKey(), entry.getValue());
                }
            }
            trans.execute(null);
            trans.waitUntilFinished();
        } catch (Exception e) {
            e.printStackTrace();
            return R.fail("启动转换失败");
        }
        return R.ok("转换执行成功");
    }

    
    @Override
    public R runKjb(String filename, Map params) {
        try {
            KettleEnvironment.init();
            JobMeta jm = new JobMeta(filename, null);
            Job job = new Job(null, jm);
            if (params != null) {
                Iterator> entries = params.entrySet().iterator();
                while (entries.hasNext()) {
                    Map.Entry entry = entries.next();
                    job.setVariable(entry.getKey(), entry.getValue());
                }
            }
            job.start();
            job.waitUntilFinished();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return R.ok("job执行成功");
    }

jenkins部署:

 

xxl-job定时任务,实现定时同步(kettle自身也可以设置定时,但是job更为灵活):

kettle转换文件编写简易整理--->待续

springboot代码整合kettle完整代码--->待续

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/973766.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号