﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-shenxiangl's blog-文章分类-ETL</title><link>http://www.blogjava.net/shenxiangl/category/29173.html</link><description>about ETL/PM/workflow/Database</description><language>zh-cn</language><lastBuildDate>Sun, 27 Jan 2008 05:17:14 GMT</lastBuildDate><pubDate>Sun, 27 Jan 2008 05:17:14 GMT</pubDate><ttl>60</ttl><item><title>ETL工具Kettle介绍和一个例子</title><link>http://www.blogjava.net/shenxiangl/articles/178003.html</link><dc:creator>shenxiangl</dc:creator><author>shenxiangl</author><pubDate>Sun, 27 Jan 2008 04:05:00 GMT</pubDate><guid>http://www.blogjava.net/shenxiangl/articles/178003.html</guid><wfw:comment>http://www.blogjava.net/shenxiangl/comments/178003.html</wfw:comment><comments>http://www.blogjava.net/shenxiangl/articles/178003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/shenxiangl/comments/commentRss/178003.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shenxiangl/services/trackbacks/178003.html</trackback:ping><description><![CDATA[    因为公司近期招了几个实习生，需要我来做一个关于Kettle的培训，准备了一些培训的资料，一个ppt，用于培训的，一个数据库备份和一个详细的操作文档，是一个小作业，不敢独享，发出来给大家share，顺便作为这个技术博客的头彩，希望大家能够多来关注。<br /><br />    如果大家不愿意看网页版，可以下载相关文档到本地研究：）<br /><br />    培训ppt在<a href="/Files/shenxiangl/Kettle%E4%BD%BF%E7%94%A8%E5%9F%B9%E8%AE%AD%E6%96%87%E6%A1%A3.rar">这里</a><br />    培训手册在<a href="/Files/shenxiangl/Kettle%E5%9F%B9%E8%AE%AD%E6%89%8B%E5%86%8C.rar">这里</a><br />    练习数据库备份在<a href="/Files/shenxiangl/etltest-DBBackup.rar">这里</a><br />    练习的脚本文件在<a href="/Files/shenxiangl/etltest-ScriptFile.rar">这里</a><br /><br /><br /><br /><hr size="2" width="100%" /><br /><br /><p style="text-align: center;"><span style="font-size: 18pt;"><strong>Kettle培训手册<br /></strong></span></p><p>
 </p><h4>Etl介绍<br /></h4><p>
 </p><p><a href="http://www.itisedu.com/phrase/200603140849245.html" target="_new"><span style="font-size: 12pt;">ETL</span></a><span style="font-size: 12pt;">（Extract-Transform-Load的缩写，即数据抽取、转换、装载的过程），对于金融IT来说，经常会遇到大数据量的处理，转换，迁移，所以了解并掌握一种etl工具的使用，必不可少。<br /></span></p><p><span style="font-size: 12pt;">Kettle是一款国外开源的etl工具，纯java编写，绿色无需安装，数据抽取高效稳定。Kettle中有两种脚本文件，transformation和job，transformation完成针对数据的基础转换，job则完成整个工作流的控制。<br /></span></p><p>
 </p><h4>kettle部署运行<br /></h4><p>
 </p><p><span style="font-size: 12pt;">将kettle2.5.1文件夹拷贝到本地路径，例如D盘根目录。<br /></span></p><p><span style="font-size: 12pt;">双击运行kettle文件夹下的spoon.bat文件，出现kettle欢迎界面：<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle1.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">稍等几秒<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle2.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">选择没有资源库，打开kettle主界面<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle3.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><h4>创建transformation，job<br /></h4><p><span style="font-size: 12pt;">点击页面左上角的<img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle4.png" alt="" />创建一个新的transformation，点击<img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle5.png" alt="" />保存到本地路径，例如保存到D:/etltest下，保存文件名为EtltestTrans，kettle默认transformation文件保存后后缀名为ktr<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击页面左上角的<img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle6.png" alt="" />创建一个新的job，点击<img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle7.png" alt="" />保存到本地路径，例如保存到D:/etltest下，保存文件名为EtltestJob，kettle默认job文件保存后后缀名为kjb<br /></span></p><p>
 </p><h4>创建数据库连接<br /></h4><p>
 </p><p><span style="font-size: 12pt;">在transformation页面下，点击左边的【Main Tree】，双击【DB连接】，进行数据库连接配置。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle8.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">Connection name自命名连接名称<br /></span></p><p><span style="font-size: 12pt;">Connection type选择需要连接的数据库<br /></span></p><p><span style="font-size: 12pt;">Method of access选择连接类型<br /></span></p><p><span style="font-size: 12pt;">Server host name写入数据库服务器的ip地址<br /></span></p><p><span style="font-size: 12pt;">Database name写入数据库名<br /></span></p><p><span style="font-size: 12pt;">Port number写入端口号<br /></span></p><p><span style="font-size: 12pt;">Username写入用户名<br /></span></p><p><span style="font-size: 12pt;">Password写入密码<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">例如如下配置：<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle9.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击【test】，如果出现如下提示则说明配置成功<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle10.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击关闭，再点击确定保存数据库连接。<br /></span></p><p>
 </p><h4>一个简单的ktr例子<br /></h4><p>
 </p><p><span style="font-size: 12pt;"><strong>目标</strong>：<br /></span></p><p><span style="font-size: 12pt;">从交易表（trade），帐户表（account），客户表（cust）抽数交易相关的所有信息，并判断对公对私分别进行处理，输出到文本文件中。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;"><strong>操作步骤：<br /></strong></span></p><p><span style="font-size: 12pt;">在EtltestTrans页面下，点击左侧的【Core Objects】，点击【Input】，选中【表输入】，拖动到主窗口释放鼠标。<br /></span></p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle11.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">双击【表输入】图标<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">数据库连接选择刚刚创建好的etltest数据库连接，在主窗口写入对应的查询语句<br /></span></p><p>
 </p><div><table style="background: rgb(217, 217, 217) none repeat scroll 0% 50%; border-collapse: collapse; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" border="0"><colgroup><col style="width: 568px;" /></colgroup><tbody valign="top"><tr><td style="border: 0.5pt solid black; padding-left: 7px; padding-right: 7px;"><p><span style="font-size: 12pt;">Select * from trade</span></p></td></tr></tbody></table></div><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle12.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击确定完成。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击左侧的【Lookup】，选中【数据库查询】，拖动到主窗口释放鼠标。<br /></span></p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle13.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">按住shift键，用鼠标点中刚才创建的【表输入】，拖动到【数据库查询】上，则建立了两个环节之间的连接。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle14.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">双击【数据库查询】图标<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">步骤名称写入account表查询，数据库连接选择刚刚创建好的etltest数据库连接，查询的表写入account，查询所需的关键字中，表字段写入acctno，比较操作符写入”=”，字段1写入acctno。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">在查询表返回的值里面写入custno，确定完成。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle15.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">同上，再创建一个数据库查询，命名为cust表查询，查询的表写入cust，查询所需的关键字写入custno=custno，查询表返回的值写入custname，custid，custtype<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle16.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击左侧的【Transform】，选中【过滤记录】，拖动到主窗口释放鼠标。<br /></span></p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle17.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击左侧的【Scripting】，选中两个【Modified Java Script Value】，拖动到主窗口释放鼠标。分别双击打开，重命名为”对公类型修改”和”对私类型修改”。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">同时，分别创建【过滤记录】和【对公类型修改】，【对私类型修改】的连接。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">双击【规律记录】打开。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">第一个&lt;field&gt;里面选择custtype，点击&lt;value&gt;，在Enter value里面写入1，确定<br /></span></p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle18.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">在发送true数据给步骤里，选择【对私类型修改】，在发送false数据给步骤里，选择【对公类型修改】，确定保存。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle19.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">双击【对公类型修改】，在里面写入javascript脚本语句<br /></span></p><p>
 </p><div><table style="background: rgb(217, 217, 217) none repeat scroll 0% 50%; border-collapse: collapse; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" border="0"><colgroup><col style="width: 568px;" /></colgroup><tbody valign="top"><tr><td style="border: 0.5pt solid black; padding-left: 7px; padding-right: 7px;"><p><span style="font-size: 12pt;">var custtype_cn=’对公客户交易’</span></p></td></tr></tbody></table></div><p>
 </p><p><span style="font-size: 12pt;">在字段中写入custtype_cn，类型选为string。确定。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle20.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">同理，在【对私类型修改】中，在里面写入javascript脚本语句<br /></span></p><p>
 </p><div><table style="background: rgb(217, 217, 217) none repeat scroll 0% 50%; border-collapse: collapse; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" border="0"><colgroup><col style="width: 568px;" /></colgroup><tbody valign="top"><tr><td style="border: 0.5pt solid black; padding-left: 7px; padding-right: 7px;"><p><span style="font-size: 12pt;">var custtype_cn=’对私客户交易’</span></p></td></tr></tbody></table></div><p>
 </p><p><span style="font-size: 12pt;">在字段中写入custtype_cn，类型选为string。确定。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击左侧的【Transform】，选中两个【增加常量】，拖动到主窗口释放鼠标。分别双击打开，重命名为”增加对公常量”和”增加对私常量”。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">分别建立【对公类型修改】和【对私类型修改】与【增加对公常量】和【增加对私常量】的连接<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle21.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">双击【增加对公常量】，名称写入value，类型选择string，值写入”这是一笔对公客户发生的交易”，确定保存。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle22.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">同理，双击【增加对私常量】，名称写入value，类型选择string，值写入”这是一笔对私客户发生的交易”，确定保存。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击左侧的【Output】，选中【文本文件输出】，拖动到主窗口释放鼠标。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">建立【增加对公常量】，【增加对私常量】和【文本文件输出】的连接。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle23.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p><span style="font-size: 12pt;">双击打开【文本文件输出】，文件名称写入D:\etltest\etltest.txt<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle24.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击内容标签，根据情况进行修改，例如<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle25.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击字段标签<br /></span></p><p><span style="font-size: 12pt;">名称依次写入tradeid，acctno，amt，custno，custname，custid，custtype_cn，value，类型根据各个字段实际类型进行选择<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle26.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">确定保存<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击<img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle27.png" alt="" />保存创建好的transformation。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击<img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle28.png" alt="" />运行这个转换。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle29.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击launch，开始运行<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">当所有状态都变成已完成时，则转换完成。<br /></span></p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle30.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><h4>另一个简单的ktr例子<br /></h4><p>
 </p><p><span style="font-size: 12pt;"><strong>目的：<br /></strong></span></p><p><span style="font-size: 12pt;">将上一个ktr生成的文本导入到数据库中。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;"><strong>操作步骤：<br /></strong></span></p><p><span style="font-size: 12pt;">创建一个transformation，命名为EtltestTransfile2db.ktr，创建数据库连接etltest，点击【Input】，选中【文本文件输入】，拖到主窗口，释放鼠标，双击打开<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">文件名称里面写入D:\etltest\etltest.txt<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle31.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击内容标签，分隔符写入@@，将头部的钩去掉<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle32.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击字段标签，名称依次写入tradeid，acctno，amt，custno，custname，custid，custtype_cn，value，类型根据各个字段实际类型进行选择<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle33.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击【Transform】，选中【字段选择】，拖到主窗口，释放鼠标<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击【Output】，选中【表输出】，拖到主窗口，释放鼠标<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">建立【文本文件输入】和【字段选择】与【字段选择】和【表输出】的连接<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle34.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">双击【表输出】，目标表中写入trade_all，提交记录数量写成1，确定保存。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle35.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">双击【字段选择】，点击 获取选择的字段，再点击Edlt Mapping，点击OK确定，编辑所有字段对应关系，点确定。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle36.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击<img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle37.png" alt="" />运行这个转换。，则将上一个ktr中生成的文本，导入到数据库当中。<br /></span></p><p>
 </p><h4>一个简单的kjb例子<br /></h4><p>
 </p><p><span style="font-size: 12pt;"><strong>目的：<br /></strong></span></p><p><span style="font-size: 12pt;">将上两个transformation一起在同一个job里面调用执行。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;"><strong>操作步骤：<br /></strong></span></p><p><span style="font-size: 12pt;">在EtlscriptJob页面，点击【Core
Objects】，点击【Job
entries】，选中【START】拖动到主窗口释放鼠标，再选中两个【Transformation】，拖动到主窗口释放鼠标，建立【START】和
【Transformation】与【Transformation】之间的连接。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">双击第一个【Transformation】，在Transformation filename中写入D:\etltest\EtltestTrans.ktr，确定保存。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle38.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p>
 </p><p><span style="font-size: 12pt;">    同时将另外一个【Transformation】，路径指向D:\etltest\EtltestTransfile2db.ktr，保存。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击<img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle39.png" alt="" />保存创建好的job。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">点击<img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle40.png" alt="" />运行这个转换。<br /></span></p><p>
 </p><p><span style="font-size: 12pt;">待所有任务都显示成功，则为job调用transformation运行成功。<br /></span></p><p>
 </p><p><img src="http://shenxiangl.com/wp-content/uploads/2008/01/012708-0349-kettle41.png" alt="" /><span style="font-size: 12pt;"><br /></span></p><p> 
<br /></p><br /><img src ="http://www.blogjava.net/shenxiangl/aggbug/178003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shenxiangl/" target="_blank">shenxiangl</a> 2008-01-27 12:05 <a href="http://www.blogjava.net/shenxiangl/articles/178003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>