文章目录
- 关于ETL的流程熟悉以及自己的见解
- 一些概念
- ETL
- kettle
- Kettle编写抽取数据
- 引用jar
- 库表文件
- 数据库连接类
- 表信息封装类
- 利用kettle进行转换测试
- 初始化
- 定义数据库连接
- 生成表输入
- 设置sql查询
- 获取目标库信息
- 关联input和output步骤
- 添加监听
- 执行抽取
- 控制台输出
一些概念
ETL
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程.(数据仓 说法就是从数据源抽取数据出来,进行清洗加工转换,然后加载到定义好的。
kettle
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
- Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
- Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
- Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制(也就是说先转换数据,再做工作流)
解读:如图,可以看到,transformation中进行了发送、读写的步骤转换;job关联transformation基础转换,在进行一系列的工作流操作,比如Ftp获取相关文件、执行SQL转换信息等
Kettle编写抽取数据
下面的讲解没有图形化kettle的,相对应的是底层代码的剖析。因为基于公司的业务没有用到图形化,有兴趣的小伙伴可以转向相关学习网址:
(打开项目)
引用jar
这是我的pom文件,根据不同需求进行微调修改
库表文件
找一个可以测试的mysql库,建立以下的表文件,并在源表插入若干测试数据
数据库连接类
此类封装了数据库连接信息
表信息封装类
此类封装了转换需要的源表、目标表的一些基础信息
利用kettle进行转换测试
前面做好了jar包、相关辅助类的铺垫,现在正式写demo测试代码。
我们建一个测试Test类
初始化
使用kettle必须先要初始化,这里初始化并进行测试数据封装
定义数据库连接
这里有两种方式:xml传参和构造传参
生成表输入
设置sql查询
获取目标库信息
关联input和output步骤
添加监听
执行抽取
控制台输出
当你的控制台输出,是以下类似的输出数据,就说明转换成功,代码跑的没问题。之后再去目标表看下有没有数据生成