ETL利器Kettle实战应用解析系列二 应用场景和实战DEMOWord下载.docx
- 文档编号:19703817
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:12
- 大小:577.34KB
ETL利器Kettle实战应用解析系列二 应用场景和实战DEMOWord下载.docx
《ETL利器Kettle实战应用解析系列二 应用场景和实战DEMOWord下载.docx》由会员分享,可在线阅读,更多相关《ETL利器Kettle实战应用解析系列二 应用场景和实战DEMOWord下载.docx(12页珍藏版)》请在冰豆网上搜索。
1)为方便演示,我这边把Sql脚本贴出来,大家直接复制在sqlserver中运行即可,sql脚本如下:
简单表之间交换
usemaster
IFEXISTS(SELECT1FROMsysdatabasesWHERENAME=N'
TestA'
)
BEGIN
DROPDATABASETestA--如果数据库存在先删掉数据库
END
GO
CREATEDATABASETestA
ON
PRIMARY--创建主数据库文件
(
NAME='
FILENAME='
E:
\ETL\DB\TestA.dbf'
SIZE=5MB,
MaxSize=20MB,
FileGrowth=1MB
go
useTestA
--建立一个测试的用户表
createtableusersA
idintnotnull,
useridvarchar(50)notnull,
usernamevarchar(200)null
--插入3条记录
insertintousersAvalues(1,'
lisi'
'
李四'
);
insertintousersAvalues(2,'
zhangsan'
张三'
insertintousersAvalues(3,'
CREATEDATABASETestB
TestB'
\ETL\DB\TestB.dbf'
useTestB
createtableusersB
2)Kettle实现方式
功能简述:
数据库TestA中的UserA表到数据库TestB的UserB表;
实现流程:
建立一个转换和一个作业Job;
A:
建立一个转换:
打开Kettle.exe,选择没有资源库,进入主界面,新建一个转换,转换的后缀名为ktr,转换建立的步骤如下:
步骤1:
创建DB连接,选择新建DB连接,如下图,我们输入相应的Sqlserver配置信息之后点击Test按钮测试是否配置正确!
我们需要建立两个DB连接,分别为TestA和TestB;
步骤2:
建立步骤和步骤关系,点击核心对象,我们从步骤树中选择【表输入】,如下图,这样拖拽一个表输入之后,我们双击表输入之后,我们自己可以随意写一个sql语句,这个语句表示可以在这个库中随意组合,只要sql语句没有错误即可,我这里只是最简单的把TestA中的所有数据查出来,语句为select*fromusersA。
接下来我们创建另外一个步骤【插入/更新】,然后在【表输入】上同时按住shift键和鼠标左键滑向【插入/更新】,这样建立两个步骤之间的连接,【插入/更新】执行的逻辑是如果UserA表中的记录在UserB中不存在那么就插入,如果存在就更新,如下图,在插入更新中我们可以做一些关键条件和字段映射,这里我们是最简单的!
点击保存,把我们建立的转换保存一下。
建立好转换之后,我们可以直接运行这个转换,检查一下是否有错,如图,有错误都会在下面的控制台上输出。
B:
如果我们需要让这个转换定时执行怎么办呢,那么我们需要建立一个作业job,见下图,在简单表同步这个转换中,我们把在A步骤中建立的ktl配置上,注意路径的正确性;
这样我们在【Start】步骤上面双击,如图:
这样这个作业就制定好了,点击保存之后,我们就可以在图形化界面上点击开始执行了!
2、2实例2:
全面进阶的一个稍微复杂的例子
ž根据客户,帐户,交易表中的数据,生成对应的数据文件,将数据文件可以导入到对应表中,并且可以用job来调用整个流程。
ž目标:
ž1),提交对应的Kettle文件
ž2),Kettle流程可以正确执行,不报错
ž3),对应的数据文件生成并格式无误,对应表中有数据并格式无误
ž说明:
ž源表:
数据库etltest中存在3张表:
目标表:
etltest中一张表
Kettle具体解决方式,步骤比较繁琐,大家可以直接到下载中下载Demo数据库文件和ktr、kjb来实战测试,这样是最好的,下面的操作仅供参考,转换预览图如下:
操作步骤:
在EtltestTrans页面下,点击左侧的【CoreObjects】,点击【Input】,选中【表
输入】,拖动到主窗口释放鼠标。
双击【表输入】图标
数据库连接选择刚刚创建好的etltest数据库连接,在主窗口写入对应的查询
语句
Select*fromtrade,如下图:
点击确定完成。
点击左侧的【Lookup】,选中【数据库查询】,拖动到主窗口释放鼠标。
按住shift键,用鼠标点中刚才创建的【表输入】,拖动到【数据库查询】上,
则建立了两个环节之间的连接,如图:
双击【数据库查询】
步骤名称写入account表查询,数据库连接选择刚刚创建好的etltest数据库
连接,查询的表写入account,查询所需的关键字中,表字段写入acctno,比较
操作符写入“=”,字段1写入acctno。
在查询表返回的值里面写入custno,确定完成,如下图:
同上,再创建一个数据库查询,命名为cust表查询,查询的表写入cust,查
询所需的关键字写入custno=custno,查询表返回的值写入custname,custid,
custtype,如下图:
点击左侧的【Transform】,选中【过滤记录】,拖动到主窗口释放鼠标。
点击左侧的【Scripting】,选中两个【ModifiedJavaScriptValue】,拖动到主窗
口释放鼠标。
分别双击打开,重命名为“对公类型修改”和“对私类型修改”。
同时,分别创建【过滤记录】和【对公类型修改】,【对私类型修改】的连接。
双击【规律记录】打开。
第一个<
field>
里面选择custtype,点击<
value>
,在Entervalue里面写入1,
确定,如图:
在发送true数据给步骤里,选择【对私类型修改】,在发送false数据给步骤
里,选择【对公类型修改】,确定保存,如图:
双击【对公类型修改】,在里面写入javascript脚本语句
varcusttype_cn='
对公客户交易'
在字段中写入custtype_cn,类型选为string。
确定。
同理,在【对私类型修改】中,在里面写入javascript脚本语句
对私客户交易'
点击左侧的【Transform】,选中两个【增加常量】,拖动到主窗口释放鼠标。
分别双击打开,重命名为“增加对公常量”和“增加对私常量”。
分别建立【对公类型修改】和【对私类型修改】与【增加对公常量】和【增
加对私常量】的连接,如图:
双击【增加对公常量】,名称写入value,类型选择string,值写入“这是一
笔对公客户发生的交易”,确定保存。
同理,双击【增加对私常量】,名称写入value,类型选择string,值写入“这
是一笔对私客户发生的交易”,确定保存。
点击左侧的【Output】,选中【文本文件输出】,拖动到主窗口释放鼠标。
建立【增加对公常量】,【增加对私常量】和【文本文件输出】的连接,如图:
双击打开【文本文件输出】,文件名称写入D:
\etltest\etltest.txt
点击内容标签,根据情况进行修改,例如
点击字段标签
名称依次写入tradeid,acctno,amt,custno,custname,custid,custtype_cn,
value,类型根据各个字段实际类型进行选择
确定保存
点击保存创建好的transformation。
点击运行这个转换。
点击launch,开始运行
当所有状态都变已完成时,则转换完成,如图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ETL利器Kettle实战应用解析系列二 应用场景和实战DEMO ETL 利器 Kettle 实战 应用 解析 系列 场景 DEMO