数据移植ETL及Kettle软件的用法

1、什么是ETL

ETL (Extract-Transform-Load),用来描述将数据从来源端经过抽取(extract)、清洗转换(transform)、加载(load)至目的端的过程。通俗的说法就是从数据源抽取数据出来,进行清洗加工转换,然后加载到定义好的数据仓库模型中去。

2、为什么要用ETL工具?

(1)当数据来自不同的物理主机,这时候如使用SQL语句去处理的话,就显得比较吃力且开销也更大。

(2)数据来源可以是各种不同的数据库或者文件,这时候需要先把他们整理成统一的格式后才可以进行数据的处理,这一过程用代码实现显然有些麻烦。

(3)在数据库中我们当然可以使用存储过程去处理数据,但是处理海量数据的时候存储过程显然比较吃力,而且会占用较多数据库的资源,这可能会导致数据资源不足,进而影响数据库的性能。

3、ETL的优点

(1)支持多种异构数据源的连接。

(2)图形化的界面操作十分方便。

(3)处理海量数据速度快、流程更清晰等。

4、ETL使用的工具

(1)Kettle:免费,开源,使用纯java编写,只需要jvm环境即可部署。可跨平台,扩展性好。

(2)Datastage:IBM公司的商业软件,最专业的ETL工具,价格高,大数据量下处理速度快,稳定。但部署有一定难度。

(3)Informatica:商业软件,价格便宜。适合大规模ETL应用。部署需要服务器和客户端的安装,广泛支持各类结构化、非结构化的数据源。

本次介绍以Kettle为例。

5、数据移植目标

(1)保证在新系统上线后,业务上与旧系统的连贯性。

(2)数据移植的整个过程要保证在3个小时以内。

6、数据移植流程

数据移出→数据清洗→数据移入

(1)数据移出

新旧系统、业务规则差异分析。首先要分析新旧系统数据差异,确定需要移植的数据范围。

(2)数据清洗

冗余的数据清除

残缺的数据补录

错误的数据纠正。

(3)数据移入

根据中间表进行移入处理,移入检核,将移入后数据加载到新核心,制定移植专项测试计划,维护移植测试环境的核心应用。

7、数据移植工具Kettle使用方法

在官网http://kettle.pentaho.com/下载并解压Kettle软件,需要JRE环境支持。移植过程大致分为5个步骤:

创建源表→创建目标表→创建映射→创建工作流及任务→启动工作流。

(1)双击Spoon.bat运行软件,点击“没有资源库”,进入主界面。左上角点击”文件-新建-转换“保存为demo.ktr。

(2)左侧选择“核心对象”面板。”在“输入”文件夹下选择“表输入”并把它拖动到右侧编辑区。

(3)双击编辑区的“表输入”图标,编辑数据输入来源。点击“数据库连接”右侧的“新建”按钮,按demo背景中的要求,配置数据库参数。配置后点击“Test”,若配置有误将弹出异常提示,根据提示修正。若无误将显示如下信息:

注意:如果连接失败,请在安装目录Kettle\data-integration\lib中加入对应的数据库驱动

点击“确定”和“OK”,我们为此表输入对象确定了数据库。

(4)继续点击“获取SQL查询语句”,选择输入表。这里我们选择EMPL这张表。

点击“确定”完成表输入对象的编辑。

(5)在左侧“核心对象”中的“转换”文件夹中选择“字段选择”功能,拖动到右侧编辑区。按住键盘shift同时鼠标从“表输入”为起点,“字段选择”为终点画一条连接。如图:

(6)双击“字段选择”,打开编辑窗口,选择“元数据”面板,点击右侧“获取改变的字段”,将自动列出之前表输入中所有字段。

(7)根据要抽取的目标表字段名(输出字段名),给每一个输入字段改成和输出字段相同的名称。同时请务必在Encoding一栏中选择输出库的编码。根据demo的背景要求,我们选择utf-8。

(8)编辑完“字段选择”后点击“确定”关闭窗口。同上,在“输出”文件夹中拖动一个“表输出”到右侧编辑区,并画连接。

(9)双击“表输出”打开其编辑窗口。同“表输入”一样,按照demo背景要求,配置好本地库。

(10)同“表输入”,选择输出的目标表。选中“指定数据库字段”选择后在“数据库字段”面板中点击“输入字段映射”。

(11)因之前已经在“字段选择”中为每一个输入字段改名,这里点“猜一猜”,会根据字段近似度自动匹配映射关系。

映射完输入输出字段的关系,检查无误后,点击“确定”。

(12)至此,我们最简单的一个抽取示例的转换建立完毕,点击“校验这个转换”,Kettle会校验并给出简单的报告。

(13)点击“运行这个转换”,选择“本地执行”,点击“启动”来执行这个转换。

(14)转换的过程可以在控制台实时显示。同时“日志”的详细程度是可选的。

(15)执行完毕后,控制台日志若无异常信息,说明转换成功,我们可以去本地库查看。发现确实已被导入新库,两者记录数相同。

(16)如果迁移结果出现乱码,可以通过以下方式解决。例如本次我使用的源是Oracle(GBK),目标库是MySQL(utf-8),迁移结束发现中文全部乱码,这时,点击“表输出”,重新编辑我们之前设置好的目标数据库连接

点击“编辑”“选项”,输入参数:characterEncoding:utf8(目标库的编码格式)

保存,重新执行任务即可解决乱码问题。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值