<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kettle on eree's blog</title><link>https://blog.ereebay.me/tags/kettle/</link><description>Recent content in Kettle on eree's blog</description><generator>Hugo</generator><language>zh-cn</language><copyright>2020-2026 eree&amp;rsquo;s blog</copyright><lastBuildDate>Sat, 23 Mar 2019 12:44:49 +0800</lastBuildDate><atom:link href="https://blog.ereebay.me/tags/kettle/index.xml" rel="self" type="application/rss+xml"/><item><title>kettle入门教程</title><link>https://blog.ereebay.me/posts/kettle%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/</link><pubDate>Sat, 23 Mar 2019 12:44:49 +0800</pubDate><guid>https://blog.ereebay.me/posts/kettle%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/</guid><description>&lt;h1 id="kettle-入门教程"&gt;kettle 入门教程&lt;/h1&gt;
&lt;p&gt;由于最后一个学期还有一个学分不够，就得再休一门课，看了看课表也就只能挑个OLAP了，又是一门完全陌生的课，然后网上关于kettle的教程又非常少，自己就搜罗了一些资料记录一下该课需要用的工具的笔记吧&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id="kettle-介绍"&gt;kettle 介绍&lt;/h2&gt;
&lt;p&gt;kettle是一个ETL（Extract, Transform and Load）数据抽取、转换、载入工具，ETL工具在数据仓库项目使用非常频繁，kettle也可以应用在以下一些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在不同应用或数据库之间整合数据&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;把数据库中的数据导出到文本文件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大批量数据装载入数据库&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;数据清洗&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;集成应用相关项目是个使用&lt;/p&gt;
&lt;p&gt;kettle使用非常简单，通过图形界面设计实现做什么业务，无需写代码去实现，因此,kettle是以面向元数据来设计&lt;/p&gt;
&lt;p&gt;kettle支持很多种输入和输出格式，包括文本文件，数据表，以及商业和免费的数据库引擎。另外，kettle强大的转换功能让您非常方便操纵数据。&lt;/p&gt;
&lt;h2 id="kettle-安装"&gt;kettle 安装&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://community.hitachivantara.com/docs/DOC-1009855"&gt;下载地址&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;由于我的平台是mac，有bug，双击不能运行，只能解压后 在终端输入&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sh spoon.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;运行spoon&lt;/p&gt;
&lt;h2 id="数据转换-导出为excel"&gt;数据转换-导出为Excel&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;连接数据库&lt;/li&gt;
&lt;li&gt;导出为Excel&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;首先下图所示新建一个转换，并设置数据库的连接。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-1.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-2.png"&gt;&lt;/p&gt;
&lt;p&gt;设置完数据库连接之后，就可以设置输入源，这里我们采用数据库中的table作为输入源&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-3.png"&gt;&lt;/p&gt;
&lt;p&gt;设置好输入源可以点击preview先预览数据&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-4.png"&gt;&lt;/p&gt;
&lt;p&gt;设置完输入源 同理将输出源选择excel拖到工作界面，但是先别急着配置输出源，在view栏，添加一个hop，用来连接输入和输出源&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-5.png"&gt;&lt;/p&gt;
&lt;p&gt;这样在配置输出源的时候，在字段的tab就可以直接获取选择要导出的字段&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-6.png"&gt;&lt;/p&gt;
&lt;p&gt;最后点击开始就进行了转换&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-7.png"&gt;&lt;/p&gt;
&lt;p&gt;最后来看下导出的文件&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-8.png"&gt;&lt;/p&gt;
&lt;h2 id="hello-world"&gt;Hello World&lt;/h2&gt;
&lt;p&gt;好，现在你已经学会了转换，下面我们就来个Helloword实例，这个教程是我在网上看到的，觉得还不错，可以多接触kettle的一些功能，而不像我上面的非常基础。&lt;/p&gt;
&lt;p&gt;那么这个helloworld就是针对数据库中的每个人名输出对应的gretting并导出为文件。&lt;/p&gt;
&lt;p&gt;首先同理设置输入源，但SQL语句需要修改下，我这里是只选出了他们的名字，按id排列，取前十个。&lt;/p&gt;
&lt;p&gt;然后就是写个js脚本自动添加个hello&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-9.png"&gt;&lt;/p&gt;
&lt;p&gt;最后用hop将三个step链接，可以先执行preview看下结果&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-10.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-11.png"&gt;&lt;/p&gt;
&lt;p&gt;最后可以看下结果&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.ereebay.me/images/kettle/kettle-12.png"&gt;&lt;/p&gt;
&lt;p&gt;以上只是演示了数据转换中最基础的几个功能，其他更详细的功能都可以在Design tab中找到
总的来说 kettle的操作逻辑就是 steps + hops，step是你的操作步骤，hops就是链接。&lt;/p&gt;
&lt;h2 id="作业-job"&gt;作业 JOB&lt;/h2&gt;
&lt;p&gt;上面只介绍了kettle的核心功能之一转换，现在要介绍kettle的另一个功能job。&lt;/p&gt;
&lt;p&gt;作业其实就是一个自动化流程，当你需要进行多个转换或者要增加一些逻辑控制条件的情况下，就需要job来实现。&lt;/p&gt;
&lt;p&gt;这里就根据前面hello world的例子，实现一个简单的job，检测当文件夹内不存在file的时候，就自动从数据库中导出数据并添加hello。&lt;/p&gt;</description><content:encoded><![CDATA[<h1 id="kettle-入门教程">kettle 入门教程</h1>
<p>由于最后一个学期还有一个学分不够，就得再休一门课，看了看课表也就只能挑个OLAP了，又是一门完全陌生的课，然后网上关于kettle的教程又非常少，自己就搜罗了一些资料记录一下该课需要用的工具的笔记吧</p>
<!-- more -->
<h2 id="kettle-介绍">kettle 介绍</h2>
<p>kettle是一个ETL（Extract, Transform and Load）数据抽取、转换、载入工具，ETL工具在数据仓库项目使用非常频繁，kettle也可以应用在以下一些场景：</p>
<ul>
<li>
<p>在不同应用或数据库之间整合数据</p>
</li>
<li>
<p>把数据库中的数据导出到文本文件</p>
</li>
<li>
<p>大批量数据装载入数据库</p>
</li>
<li>
<p>数据清洗</p>
</li>
</ul>
<p>集成应用相关项目是个使用</p>
<p>kettle使用非常简单，通过图形界面设计实现做什么业务，无需写代码去实现，因此,kettle是以面向元数据来设计</p>
<p>kettle支持很多种输入和输出格式，包括文本文件，数据表，以及商业和免费的数据库引擎。另外，kettle强大的转换功能让您非常方便操纵数据。</p>
<h2 id="kettle-安装">kettle 安装</h2>
<p><a href="https://community.hitachivantara.com/docs/DOC-1009855">下载地址</a></p>
<p>由于我的平台是mac，有bug，双击不能运行，只能解压后 在终端输入</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sh spoon.sh
</span></span></code></pre></div><p>运行spoon</p>
<h2 id="数据转换-导出为excel">数据转换-导出为Excel</h2>
<ol>
<li>连接数据库</li>
<li>导出为Excel</li>
</ol>
<p>首先下图所示新建一个转换，并设置数据库的连接。</p>
<p><img loading="lazy" src="/images/kettle/kettle-1.png"></p>
<p><img loading="lazy" src="/images/kettle/kettle-2.png"></p>
<p>设置完数据库连接之后，就可以设置输入源，这里我们采用数据库中的table作为输入源</p>
<p><img loading="lazy" src="/images/kettle/kettle-3.png"></p>
<p>设置好输入源可以点击preview先预览数据</p>
<p><img loading="lazy" src="/images/kettle/kettle-4.png"></p>
<p>设置完输入源 同理将输出源选择excel拖到工作界面，但是先别急着配置输出源，在view栏，添加一个hop，用来连接输入和输出源</p>
<p><img loading="lazy" src="/images/kettle/kettle-5.png"></p>
<p>这样在配置输出源的时候，在字段的tab就可以直接获取选择要导出的字段</p>
<p><img loading="lazy" src="/images/kettle/kettle-6.png"></p>
<p>最后点击开始就进行了转换</p>
<p><img loading="lazy" src="/images/kettle/kettle-7.png"></p>
<p>最后来看下导出的文件</p>
<p><img loading="lazy" src="/images/kettle/kettle-8.png"></p>
<h2 id="hello-world">Hello World</h2>
<p>好，现在你已经学会了转换，下面我们就来个Helloword实例，这个教程是我在网上看到的，觉得还不错，可以多接触kettle的一些功能，而不像我上面的非常基础。</p>
<p>那么这个helloworld就是针对数据库中的每个人名输出对应的gretting并导出为文件。</p>
<p>首先同理设置输入源，但SQL语句需要修改下，我这里是只选出了他们的名字，按id排列，取前十个。</p>
<p>然后就是写个js脚本自动添加个hello</p>
<p><img loading="lazy" src="/images/kettle/kettle-9.png"></p>
<p>最后用hop将三个step链接，可以先执行preview看下结果</p>
<p><img loading="lazy" src="/images/kettle/kettle-10.png"></p>
<p><img loading="lazy" src="/images/kettle/kettle-11.png"></p>
<p>最后可以看下结果</p>
<p><img loading="lazy" src="/images/kettle/kettle-12.png"></p>
<p>以上只是演示了数据转换中最基础的几个功能，其他更详细的功能都可以在Design tab中找到
总的来说 kettle的操作逻辑就是 steps + hops，step是你的操作步骤，hops就是链接。</p>
<h2 id="作业-job">作业 JOB</h2>
<p>上面只介绍了kettle的核心功能之一转换，现在要介绍kettle的另一个功能job。</p>
<p>作业其实就是一个自动化流程，当你需要进行多个转换或者要增加一些逻辑控制条件的情况下，就需要job来实现。</p>
<p>这里就根据前面hello world的例子，实现一个简单的job，检测当文件夹内不存在file的时候，就自动从数据库中导出数据并添加hello。</p>
<p><img loading="lazy" src="/images/kettle/kettle-13.png"></p>
<p>在右侧工具栏找到上图的控件拖进工作区，然后做hop连接，设置一下就行了。操作上和创建转换时类似的，只是将多个创建组合了起来</p>
<p>如下图是配置转换的界面，输入转换的脚本地址</p>
<p><img loading="lazy" src="/images/kettle/kettle-14.png"></p>
<h2 id="厨房与煎锅">厨房与煎锅</h2>
<p>kitchen和pan指令是用于执行作业和转换脚本的命令。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-zsh" data-lang="zsh"><span class="line"><span class="cl">./kitch.sh -file ./scripts/demo.kjb
</span></span><span class="line"><span class="cl">./pan.sh -file ./scripts/demo.ktr
</span></span></code></pre></div><p>以后用spoon设计好的作业和转换只要保存下来，用命令行直接执行就好了，方便许多。</p>
<p>后期有用到新的功能就在更新笔记。</p>
<h2 id="参考资料">参考资料</h2>
<p><a href="http://www.cnblogs.com/limengqiang/archive/2013/01/16/KettleApply1.html#syzj">ETL利器Kettle实战应用解析系列一【Kettle使用介绍】</a></p>
<p><a href="https://blog.csdn.net/u012637358/article/details/82593492">KETTLE使用教程</a></p>
<p><a href="https://blog.csdn.net/neweastsun/article/details/38845795">kettle JOB使用</a></p>
<p><a href="https://ask.hellobi.com/blog/yuguiyang1990/category/1532">kettle教程</a></p>
<p><a href="http://www.kettle.net.cn/">Kettle中文网</a></p>
]]></content:encoded></item></channel></rss>