一直用SSIS做ETL,越来越感觉这玩意不是亲生的.因此萌生换ETL工具的想法,不过Kettle社区版没什么调度系统,貌似错误处理也不是很方便,且先了解吧. 本文简略的记录了整个软件的使用流程.

开始

Kettle 的几个子程序的功能和启动方式

Spoon.bat: 图形界面方式启动作业和转换设计器。
Pan.bat: 命令行方式执行转换。
Kitchen.bat: 命令行方式执行作业。
Carte.bat: 启动web服务,用于 Kettle 的远程运行或集群运行。
Encr.bat: 密码加密

资源库

资源库就是放置Metadata的地方了. 点CTRL -R可以显示资源库连接的窗口,没有的新建一个就行. 看了下论坛,都推荐用文件资源库 (使用了org.pentaho.di.repository.Repository 接口)

按 CTRL –E可以浏览所连接的资源库中的Metadata


做的作业,转换,连接 等保存后,直接可以在资源库中读取使用.

菜单项

这里可以设置kettle运行时候的一些默认参数

这里也是类似

简单示例

在Input里面拖个 Dtata Grid,在Output里面拖个 Text file output

Data Grid里面输入部分数据

在Data Grid组件上悬停,然后点击红框按钮连接Text file output组件


双击 Text file output ,然后在Fields 页面点击Get Fields.获取字段,然后在File页中选择输出路径

运行

最后点击运行按钮

在弹出来的对话框中直接点运行.

传输方式

再托一个 Table output.连接的时候问你传输方式,根据需要选一个即可

也可以右击组件,选择传送方式

查看输入/输出的Metadata

右击Text file output ,选择 Show input fields 可以查看输入的Metadata

双击Text file output,选择连接,指定表名,然后复选 Specify database fields , 然后点击Get fields按钮

此时我们数据库中并没有testa这张表,此时点击界面上的,SQL生成按钮,会为我们自动生成建表语句

错误输出

再拖一个文本输出对象 Text file output 2 .然后连接 Table output , 连接选项,选择 Error handling of step

随后右击Table output 点击 Define error handing


设定相关字段名,此时改一下数据,如数据类型等,执行后就可以看到效果了.

常用控件

Select values

可以选择字段,设置数值格式等,不需要的删掉

Add constants

增加常量字段

Generate random value

生成随机数,如果一想要一次生成多行数据,则右击选择,Change number of copies to start.(注意这里是生成多份哦.很可怕)

Filter rows

过滤记录,不符合条件的扔掉,符合的输出

Calculator

计算器.Calculation 里面有很多选项,选中以后指定对应字段即可

Merge Join

表格连接

Join Rows (cartesian product) 笛卡尔输出

Table input

执行Select 语句,从数据库中获取数据.可以通过?或者${var}方式使用变量. 实际演示如下:

0x01 拖一个Get System Info 组件,然后设置一个变量,类型是命令行参数1

0x02 Table input 写好语句后,勾选 Replace variables in script? ,然后在 Insert data from step 中选插入数据的步骤.(此处选择前面创建的Get System Info)

注: 其中 Enable lazy conversion 选项是提升性能用的. 如果使用了,获取数据不做数据转换.用到的时候再转 (延迟转换用 rs.getBytes(int) 某则用 rs.getString(int))

0x03 在之个性步骤指定参数,就可以执行看到效果了.

执行

远程执行

远程执行需要执行Carte,他内嵌Jetty的http server .

0x01 执行命令,启动http server
Carte 192.168.1.10 2333

0x02 在项目中新增子服务器

用户名密码都是cluster, 如果要修改可以至C:\data-integration\pwd\kettle.pwd 修改

0x03 执行

选则远程执行,然后选择我们刚才建立的服务器即可

群集

通过上面的步骤,我们可以多创建一台服务器.然后组合起来做成群集.其中有一台要设置为Master

0x01 建立群集

0x02 使用群集

右击组件,然后选择Clusterings,选择刚才创建群集,

如果有组件使用了群集,那么执行的时候默认群集这个选项就选中了

命令行执行

参数值格式  /参数名:值 或 -参数名=值  (建议第一种)

0x01 新建一个作业

0x02 通过命令行执行

资源库名称 ResConn,作业名称job ,路径在根目录下,其实不写也可以,日志文件 log.txt,日志级别 basic (日志默认保存在 java.io.tmpdir的临时目录中文件名类似spoon_XXX.log)

.\Kitchen.bat /rep:ResConn /job:job /dir:/ /logfile:c:/log.txt /level:basic

另外可以直接把job依赖的文件导出成 zip,然后直接执行zip文件

kitchen /file:c:/job1.kjb /export:c:/a.zip
kitchen.bat /file:”zip:file:///c:/a.zip!job1.kjb”

Kettle 学习笔记的更多相关文章

  1. Kettle学习笔记(四)— 总结

    目录 Kettle学习笔记(一)- 环境部署及运行 Kettle学习笔记(二)- 基本操作 kettle学习笔记(三)- 定时任务的脚本执行 Kettle学习笔记(四)- 总结 Kettle中设置编码 ...

  2. Kettle学习笔记(二)— 基本操作

    目录 Kettle学习笔记(一)- 环境部署及运行 Kettle学习笔记(二)- 基本操作 kettle学习笔记(三)- 定时任务的脚本执行 Kettle学习笔记(四)- 总结 打开Kettle 打开 ...

  3. Kettle学习笔记(一)— 环境部署及运行

    目录 Kettle学习笔记(一)-环境部署及运行 Kettle学习笔记(二)- 基本操作 kettle学习笔记(三)- 定时任务的脚本执行 Kettle学习笔记(四)- 总结 Kettle简介 Ket ...

  4. kettle学习笔记及实践

    转自萤火的萤 最近在用kettle迁移数据,从对kettle一点不会到比较熟悉,对于期间的一些问题和坑做了记录和总结,内容涵盖了使用的经验和技巧,踩到的坑.最佳实践和优化前后结果对比. 常用转换组件 ...

  5. kettle学习笔记(二)——kettle基本使用

    一.子程序功能和启动方式介绍 Spoon.bat: 图形界面方式启动作业和转换设计器. Pan.bat: 命令行方式执行转换. Kitchen.bat: 命令行方式执行作业. Carte.bat: 启 ...

  6. kettle学习笔记(十)——数据检验、统计、分区与JS脚本

    一.概述 数据剖析和数据检验: 用于数据的检查.清洗 . 统计步骤: 提供数据采样和统计的功能 分区: 根据数据里某个字段的值,拆分成多个数据块.输出到不同的库表和文件中. 脚本: Javascrip ...

  7. kettle学习笔记(九)——子转换、集群与变量

    一.概述 kettle中3个重要的步骤: 子转换/映射 在转换里调用一个子转换,便于封装和重用. 集群 集群模式 变量和参数 变量和参数的用法 二.子转换 1.定义子转换 主要由映射输入与映射输出定义 ...

  8. kettle学习笔记(八)——kettle查询步骤与连接步骤

    一.概述 查询步骤: 用来查询数据源里的数据并合并到主数据流中 . 连接步骤: 结果集通过关键字进行连接 .(与前面的UNION不同) 二.查询步骤 1.流查询 流查询示例:(注意上文中的流查询的限制 ...

  9. kettle学习笔记(三)——kettle资源库、运行方式与日志

    一.kettle资源库 资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中. 资源库可以使多用户共享转换任务,转换任务在资源库中是以文件夹形式分组管理的,用户可以自定义文件 ...

随机推荐

  1. REST Web Server,REST介绍

    参考资料: 1.http://www.chinalivedoor.com/story/1123.html 2. Backbone.js 是一种重量级javascript  MVC 应用框架,通过Mod ...

  2. JQuery UI 精品UI推荐

    1.JQuery MiniUi  http://www.miniui.com/

  3. Effective C++笔记 55条编程法则

    1.  视C++为一个语言联邦 C++高效编程守则视状况而变化,取决于你使用C++的哪一部分. 2.  尽量以const,enum.inline替代#define 1) 对于单纯常量,最好以const ...

  4. 把war包放到Tomcat安装文件夹下,不能直接訪问的解决方式

    临床表现: Tomcat启动后首页能訪问(http://localhost:8080/). 将自己写的一个webprojectwar包放到Tomcat安装文件夹下的/webapps以下(比方hello ...

  5. Unity大中华区主办 第二届Unity 游戏及应用大赛 实力派精品手游盘点

    Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎.包含如今时 ...

  6. Egret初体验–躲避类小游戏

    下面简单介绍一下我这个游戏:基本上就3个画面(准备再添加一个胜利的界面)开始画面,一个按钮,点击进入游戏游戏画面,滚动的背景,触摸移动的老鹰,从天而降的翔,以及右上角的时间条结束画面,显示结果,关注按 ...

  7. 构建一个用于产品介绍的WEB应用

    为了让用户更好地了解您的产品功能,您在发布新产品或者升级产品功能的时候,不妨使用一个产品介绍的向导,引导用户熟悉产品功能和流程.本文将给您介绍一款优秀的用于产品介绍的WEB应用. 就像微博或邮箱这类W ...

  8. Sizzle之tokenize

    在Sizzle里,大体思路,当为复合选择器时,判断是否支持querySeletorAll,如果不支持则调用自写方法select. select的功能十分冗长,下面先分析tokenize 在tokeni ...

  9. #import和#include的区别 关键字@class的作用

    一.#import和#include的区别当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误但是使用两次#import的话,不 ...

  10. c#导出文件,文件名中文乱码解决方法。

    public string clFielName(string fileName) { System.Web.HttpContext curContext = System.Web.HttpConte ...