ETL利器Kettle实战应用解析系列二 【应用场景和实战DEMO下载】

本系列文章主要索引以下:javascript

1、ETL利器Kettle实战应用解析系列一【Kettle使用介绍】html

2、ETL利器Kettle实战应用解析系列二 【应用场景和实战DEMO下载】java

3、ETL利器Kettle实战应用解析系列三 【ETL后台进程执行配置方式】sql

本文主要阅读目录以下:数据库

一、应用场景网络

二、DEMO实战数据结构

三、DEMO下载sqlserver

 

一、应用场景测试

这里简单归纳一下几种具体的应用场景,按网络环境划分主要包括:spa

  • 表视图模式:这种状况咱们常常遇到,就是在同一网络环境下,咱们对各类数据源的表数据进行抽取、过滤、清洗等,例如历史数据同步、异构系统数据交互、数据对称发布或备份等都归属于这个模式;传统的实现方式通常都要进行研发(一小部分例如两个相同表结构的表之间的数据同步,若是sqlserver数据库能够经过发布/订阅实现),涉及到一些复杂的一些业务逻辑若是咱们研发出来还容易出各类bug;

  • 前置机模式:这是一种典型的数据交换应用场景,数据交换的双方A和B网络不通,可是A和B均可以和前置机C链接,通常的状况是双方约定好前置机的数据结构,这个结构跟A和B的数据结构基本上是不一致的,这样咱们就须要把应用上的数据按照数据标准推送到前置机上,这个研发工做量仍是比较大的;

  • 文件模式: 数据交互的双方A和B是彻底的物理隔离,这样就只能经过以文件的方式来进行数据交互了,例如XML格式,在应用A中咱们开发一个接口用来生成标准格式的XML,而后用优盘或者别的介质在某一时间把XML数据拷贝以后,而后接入到应用B上,应用B上在按照标准接口解析相应的文件把数据接收过来;

综上3种模式若是咱们都用传统的模式无疑工做量是巨大的,那么怎么作才能更高效更节省时间又不容易出错呢?答案是咱们能够用一下Kettle-_-!

二、DEMO实战

二、1 实例1:数据库TestA中的UserA表到数据库TestB的UserB表

1)为方便演示,我这边把Sql脚本贴出来,你们直接复制在sqlserver中运行便可,sql脚本以下:

简单表之间交换

 

2)Kettle实现方式

功能简述:数据库TestA中的UserA表到数据库TestB的UserB表;

实现流程:创建一个转换和一个做业Job;

A:创建一个转换:打开Kettle.exe,选择没有资源库,进入主界面,新建一个转换,转换的后缀名为ktr,转换创建的步骤以下:

步骤1:建立DB链接,选择新建DB链接,以下图,咱们输入相应的Sqlserver配置信息以后点击Test按钮测试是否配置正确!

咱们须要创建两个DB链接,分别为TestA和TestB;

步骤2:创建步骤和步骤关系,点击核心对象,咱们从步骤树中选择【表输入】,以下图,这样拖拽一个表输入以后,咱们双击表输入以后,咱们本身能够随意写一个sql语句,这个语句表示能够在这个库中随意组合,只要sql语句没有错误便可,我这里只是最简单的把TestA中的全部数据查出来,语句为select * from usersA。

接下来咱们建立另一个步骤【插入/ 更新】,而后在【表输入】上同时按住shift键和鼠标左键滑向【插入/ 更新】,这样创建两个步骤之间的链接,【插入/ 更新】执行的逻辑是若是UserA表中的记录在UserB中不存在那么就插入,若是存在就更新,以下图,在插入更新中咱们能够作一些关键条件和字段映射,这里咱们是最简单的!点击保存,把咱们创建的转换保存一下。

创建好转换以后,咱们能够直接运行这个转换,检查一下是否有错,如图,有错误都会在下面的控制台上输出。

B:若是咱们须要让这个转换定时执行怎么办呢,那么咱们须要创建一个做业job,见下图,在简单表同步这个转换中,咱们把在A步骤中创建的ktl配置上,注意路径的正确性;

这样咱们在【Start】步骤上面双击,如图:

这样这个做业就制定好了,点击保存以后,咱们就能够在图形化界面上点击开始执行了!

二、2 实例2:全面进阶的一个稍微复杂的例子

ž根据客户,账户,交易表中的数据,生成对应的数据文件,将数据文件能够导入到对应表中,而且能够用job来调用整个流程。
ž目标:
ž1),提交对应的Kettle文件
ž2),Kettle流程能够正确执行,不报错
ž3),对应的数据文件生成并格式无误,对应表中有数据并格式无误
ž说明:
ž源表:数据库etltest中存在3张表:
目标表:etltest中一张表
 
Kettle具体解决方式,步骤比较繁琐,你们能够直接到下载中下载Demo数据库文件和ktr、kjb来实战测试,这样是最好的,下面的操做仅供参考,转换预览图以下:

操做步骤:
在EtltestTrans页面下,点击左侧的【Core Objects】,点击【Input】,选中【表
输入】,拖动到主窗口释放鼠标。
双击【表输入】图标
数据库链接选择刚刚建立好的etltest数据库链接,在主窗口写入对应的查询
语句
Select * from trade ,以下图:

点击肯定完成。
点击左侧的【Lookup】,选中【数据库查询】,拖动到主窗口释放鼠标。
按住shift键,用鼠标点中刚才建立的【表输入】,拖动到【数据库查询】上,
则创建了两个环节之间的链接,如图:

双击【数据库查询】

步骤名称写入account 表查询,数据库链接选择刚刚建立好的etltest 数据库
链接,查询的表写入account,查询所需的关键字中,表字段写入acctno,比较
操做符写入“=”,字段1写入acctno。
在查询表返回的值里面写入custno,肯定完成,以下图:


同上,再建立一个数据库查询,命名为cust表查询,查询的表写入cust,查
询所需的关键字写入custno=custno,查询表返回的值写入custname,custid,
custtype,以下图:


点击左侧的【Transform】,选中【过滤记录】,拖动到主窗口释放鼠标。
点击左侧的【Scripting】,选中两个【Modified Java Script Value】,拖动到主窗
口释放鼠标。分别双击打开,重命名为“对公类型修改”和“对私类型修改”。
同时,分别建立【过滤记录】和【对公类型修改】,【对私类型修改】的链接。
双击【规律记录】打开。
第一个<field>里面选择custtype,点击<value>,在Enter value 里面写入1,
肯定,如图:


在发送true数据给步骤里,选择【对私类型修改】,在发送false数据给步骤
里,选择【对公类型修改】,肯定保存,如图:


双击【对公类型修改】,在里面写入javascript 脚本语句
var custtype_cn='对公客户交易'
在字段中写入custtype_cn,类型选为string。肯定。
同理,在【对私类型修改】中,在里面写入javascript脚本语句
var custtype_cn='对私客户交易'
在字段中写入custtype_cn,类型选为string。肯定。
点击左侧的【Transform】,选中两个【增长常量】,拖动到主窗口释放鼠标。
分别双击打开,重命名为“增长对公常量”和“增长对私常量”。
分别创建【对公类型修改】和【对私类型修改】与【增长对公常量】和【增
加对私常量】的链接,如图:


双击【增长对公常量】,名称写入value,类型选择string,值写入“这是一
笔对公客户发生的交易”,肯定保存。
同理,双击【增长对私常量】,名称写入value,类型选择string,值写入“这
是一笔对私客户发生的交易”,肯定保存。
点击左侧的【Output】,选中【文本文件输出】,拖动到主窗口释放鼠标。
创建【增长对公常量】,【增长对私常量】和【文本文件输出】的链接,如图:


双击打开【文本文件输出】,文件名称写入D:\etltest\etltest.txt
点击内容标签,根据状况进行修改,例如
点击字段标签
名称依次写入tradeid,acctno,amt,custno,custname,custid,custtype_cn,
value,类型根据各个字段实际类型进行选择
肯定保存
点击保存建立好的transformation。
点击运行这个转换。
点击launch,开始运行
当全部状态都变已完成时,则转换完成,如图:

三、Demo下载

相关文章
相关标签/搜索