ETL工具之Kettle的入门

写在前面
  kettle是一个开源的ETL工具 ,ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),实际工作中,我们常遇到各种数据的处理,转换,迁移,所以此时kettle就派上了用场。kettle是纯java编写,支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现,其中最主要的我们通过熟练的应用它,减少了非常多的研发工作量,提高了我们的工作效率。下面一起来学习kettle。
  1、Kettle概念
  Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
  Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
  Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
  Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

  运行
  kettle中的一个图形用户界面叫spoon,spoon可以设计和运行转换和作业。在windows中执行spoon.bat,在Lunix系统中执行spoon.sh;
  Spoon是一个图形设计工具,用来设计和测试数据交换处理流程,也可以通过命令行(终端)执行处理流程。
  在spoon中设计作业和转换,kettle提供两种方式存储:资源库和文件;
  如果你选择资源库,spoon第一次启动时需要创建资源库;选择  文件方法,作业保存文件是的扩展名是KJB,转换文件的扩展名为KTR。
  注意:为了后面连接顺利连接数据库,需要将数据库驱动 jar 包放入 kettle 解压后路径的 lib 文件夹中即可。
  下面我们使用文件的方式创建一个示例:

  首先我们来做一个表对表抽取数据的示例

  • 建立转换
      1.在文件->新建装换。
      2.新建转换后在左边的主对象树中建立DB连接用以连接数据库。如图所示:
  • etcd java接入 etl与java_etcd java接入

  •   注意:主机名称,安装在本机的数据库,写localhost,安装在服务器上的数据库,写服务器IP。
      点击测试连接数据库是否成功。连接成功后,CTRL+S 保存到任意目录下,此时该目录下会生成一个 .ktr结尾的文件,这就是我们建立的转换文件。
      3.然后点击 核心对象->输入->表输入 ,双击表输入见下图 :
  • etcd java接入 etl与java_数据_02

  •   数据库连接选刚才建立的数据库连接名称 ,SQL中写我们要将哪些数据迁移的 SQL语句,可以点预览查看要迁移的数据逻辑是否正确。
      4.核心对象->输入->插入/更新,此时按住 shife 键 拖动箭头 由 表输入指向 插入/更新, 如下图
  • etcd java接入 etl与java_etl_03

  •   5.双击插入/更新,如下图
  • etcd java接入 etl与java_数据_04

  •   此时这里的数据库连接指的是 目标数据库的地址,意思是你要将刚刚查出的数据 插入和更新到哪个数据库。
      同理 目标模式值得是目标数据库 名称 ,目标表指的是你要将数据插入目标数据库的哪张表。
      用来查询的关键字,其实我们可以理解为主键,就是当两张表以主键关联,有数据时,我们就更新数据,如果没数据,证明目标表中不存在这这条数据,那我们就插入。点击获取字段可以获取所有字段,这里我们只留下主键字段即可。
      更新的字段,其实就是我们的所有字段了,同样点击获取和更新字段按钮可以获取所有字段。注意这里的表字段指的是原表的字段,刘字段指的是目标表的字段,这里可以配置对应关系。比如源表中 JOB字段 对应 的是目标表的V_JOB 字段,我们要重新点击流字段进行选择,这里点击获取和更新字段 得到的字段对应关系,只是Kettle 根据名称相似度等自动匹配的,不一定符合真实的情况。
      到此步骤,我们的一个转换就保存完了。
  • 建立作业
      1.在文件->新建作业
      2.CTRL+S 保存到任意目录下,此时该目录下会生成一个 .kjb结尾的文件,这就是我们建立的作业文件。
      3.我们在通用 文件夹下拖动一个START 到作业中,双击START 如下:
  • etcd java接入 etl与java_数据_05

  • 这里可以配置定时调度什么的,这里我们选用默认配置,完了手动执行即可。
    4…我们在通用 文件夹下拖动一个 转换 到作业中,双击转换 如下:
  • etcd java接入 etl与java_etcd java接入_06

  •   点击红框的地方,选择我们刚才保存的转换文件 (以.ktr 结尾的文件),点保存即可。
    5.同样按住shift ,拖动箭头,由START 指向转换,如下图:
  • etcd java接入 etl与java_数据_07

  • 6.点击上图 红框可执行作业。执行完成后,到目标表去查看是否已经有数据了呢?