• 项目知识学习篇———数据清洗之kettle以及集成到java项目


    一、kettle工具下载

    链接: https://pan.baidu.com/s/13Mx-QJkY-5dY-nDIpuZAzw 提取码: x146

    pdi-ce-8.1.0.0.zip就是kettle软件   下载之后解压     进入文件夹根目录点击Spoon.bat就能开启客户端

     二、kettle使用

      1.需要连接上两个数据库   一个是你想要copy的库    还有一个是你自己的库    我这里是需要从一个oracle库拿到数据    然后放入到我这边的mysql数据库

      2.右键DB连接   新建连接

    3.我这里使用的是oracle和mysql需要两个连接包   在我网盘链接里有  ojdbc14-10.2.0.2.0.jar和mysql-connector-java-5.1.41.jar     拷贝放入到kettle的lib下上一步就可连接成功

    4.然后就是两个库的关联映射  点击文件---新建----转换   将以下两个  表输入和插入/更新拖到转换之中   用shift将两个连接起来   效果如下

    5.点击表输入  连接上你想要拷贝数据库的源数据库   获取sql语句就是查询你想要的表的数据

    6.点击 插入更新  连接上你的本地数据库   浏览找到对应表  关联上两个表的唯一标示id  类似主键关联  kettle根据这个判断插入还是更新

    然后下面关联上你想要更新的字段点确定就可以跑起来了

    7.这样你就可以从一个库同步数据到你的库    你可以在你本机windows下运行也可以在linux系统下部署kettle  然后可以新建job来调用转换  实现定时更新数据

    保存这个转换你可以得到一个.ktr文件  纯Java编写的可以集成到Java项目之中

     三、集成到java项目

     1.以上 的方式可以拿到数据   不过部署到linux系统由于kettle有点大   再去服务器中调用   想想还是算了   还是集成到Java项目中更合理

    2.集成到java项目需要几个包

    <!-- kettle相关jar包 -->
    <dependency>
    <groupId>pentaho-kettle</groupId>
    <artifactId>kettle-core</artifactId>
    <version>8.1.0.0-365</version>
    </dependency>

    <dependency>
    <groupId>pentaho-kettle</groupId>
    <artifactId>kettle-engine</artifactId>
    <version>8.1.0.0-365</version>
    </dependency>

    <dependency>
    <groupId>pentaho</groupId>
    <artifactId>metastore</artifactId>
    <version>8.1.0.0-365</version>
    </dependency>

    <dependency>
    <groupId>org.apache</groupId>
    <artifactId>commons-vfs2</artifactId>
    <version>2.2</version>
    </dependency>

    <dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>17.0</version>
    </dependency>

    <dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.10</version>
    </dependency>

    <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.3</version>
    </dependency>

    <dependency>
    <groupId>oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.2.0</version>
    </dependency>

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.41</version>
    </dependency>
    <!-- kettle jar包结束 -->

    3.jar包我分享的网盘有   国内镜像没有kettle相关包  可以把我的包加入你maven的本地仓库中就好   有些是没用的  根据上面我给的pom加就好

    4.创建一个service类   调用kettle的转换生成的.ktr文件就可以集成到java中  然后我们可以使用spring定时调度框架Task定时调用这个类就实现了定时更新数据  是不是很方便啊  嘿嘿嘿

    @Service("getCompanyInfoService")
    public class GetCompanyInfoService {

    /*

    //main方法用于测试
     public static void main(String[] args) {

    //ktr文件路径 String filePath =CompanyAndVehicleInfo.companyPath; //指定xml解析

     System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
    "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
     runKtr(filePath)
    ;

                    }

    */

    public static void runKtr() {
    // ktr文件路径
    String filePath = CompanyAndVehicleInfo.companyPath;
    // 指定xml解析
    System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
    "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
    try {
    // 初始化
    KettleEnvironment.init();
    // 创建ktr元对象
    TransMeta transMeta = new TransMeta(filePath);
    // 创建ktr
    Trans trans = new Trans(transMeta);
    // 执行ktr
    trans.execute(null);
    // 等待执行完毕
    trans.waitUntilFinished();
    // 判断执行是否出错
    if (trans.getErrors() > 0) {
    System.err.println("文件执行出错!!!!!!!!");
    }

    } catch (KettleException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }

    5.Task类

    @Component
    @EnableScheduling
    public class CompanyAndCycleTask {
    @Autowired
    private GetCompanyInfoService getCompanyInfoService;

    // 设置每天2.00
    @Scheduled(cron = "0 0 2 * * ?")
    @Scheduled(fixedRate = 1000 * 60 * 10)
    public void getCompanyInformation() {
    getCompanyInfoService.runKtr();

    }

  • 相关阅读:
    springboot热启动中那些不为人知的东东
    maven生命周期(lifecycle)—— maven权威指南学习笔记(四)
    maven 一个简单项目 —— maven权威指南学习笔记(三)
    maven 安装、运行、获取帮助 —— maven权威指南学习笔记(二)
    maven 简介 —— maven权威指南学习笔记(一)
    用opencsv文件读写CSV文件
    java基础之——DecimalFormat格式化数字
    Git学习
    Spring Boot教程(二十四)Web应用的统一异常处理
    Spring Boot教程(二十三)使用Swagger2构建强大的RESTful API文档(2)
  • 原文地址:https://www.cnblogs.com/unrulywind/p/9714151.html
Copyright © 2020-2023  润新知