相关概念

Kettle数据清洗是采用元数据(Meta-data)驱动,以数据流的方式进行的,数据从数据源(数据库/文件等)在一系列相连的step之间依次向后流动,各个step完成对流经该step的数据进行需要的处理工作。

Kettle中的数据转换组件按粒度从小到大分为Step、Trans、Job

Step:是完成单一具体功能的组件,如从文件中读取数据、对流中的字段进行字符串拆分操作、对不能为空的字段设置相应默认值、将流中的数据写入到数据表等。

Trans:转换,一般最终清洗完成的数据库中有多少个标准表,就要有多少个Trans,通常与表是一一对应的。

Trans由多个Step组成,Step之间使用hop连接,实现数据在Step之间的流动,一系列Step的连接从而完成更复杂的转换。

Job:作业,由多个Trans组成,表示一次完整的数据清洗任务。

kettle的使用:

新建一个转换

1新建空白转换

文件—>新建—>转换 :新建一个空白的转换,ctrl+s保存该转换,命名为标准表的表名;

2添加数据库连接

在主对象树中,双击DB连接,或右击DB连接,选择新建数据库连接,打开数据库连接对话框:

其中Oracle数据库连接中的数据表空间,索引表空间两项不需要填。其余参数必填,填好之后点测试,检测是否能正确连接,连接成功后,点确认,便保存了当前连接。

其实,可以随时在需要的时候建立数据库连接,而不必刚开始就添加。

3添加需要的step

在核心对象的各个分组中,找到需要的step,双击,或者拖拽到右侧设计界面,即可添加step到当前转换中。

简单示例:新建一个转换,实现生成10000条测试数据,存放到mysql中的表t1中,t1只有两个字段,一个是整型,一个是varchar。

step1:新建一个空白转换,保存,文件名为data_gen.ktr

step2:在核心对象树中找到“输入”分组中的“生成记录”这个Step,并拖放到右边的工作区中

Step3:在“转换”分组中,找到“添加序列”,并拖放到工作区中

Step4:在“输出”分组中,找到“表输出”Step,并拖放到工作区中

Step5:单击选中“生成记录”,然后按住shift+鼠标左键,拖至“增加序列”,如此,便在这两个Step中建立了一个Hop,将这两个Step链接起来,注意hop是有向的。

同样的方法链接“增加序列”和“表输出”

Step6:双击“生成记录”配置该Step的元数据信息:

如图中的修改,步骤名称更改为“生成字符串”;限制改为“10000“,表示生成10000条记录;字段列表中,如图填写,名称随意,类型在下拉列表中选择String,值填写”aaaa”,其他留空,不要填写。然后,点击确定即可。

Step7:双击“增加序列”,配置其元数据信息:

如图填写:值的名称即为当前添加字段的名称,使用计数器来生成序列,会生成从1递增的序列,可以修改起始值即步长。最大值可以修改为10000,不设置也行,因为它之前的Step结束后,它也跟着结束了。

Step8:双击表输出,配置其元数据信息:

点数据库连接后面的“新建”按钮,即为创建一个数据库连接。

根据自己数据库的实际情况,设置上述信息,最好点击下连接测试,防止信息填写错误。

测试通过,后确认即可保存该数据库连接,此时表输出设置窗口的数据库连接自动填上了刚才建立的连接:

点击目标表后的“浏览”按钮,选择要存放数据的表:

如上图,我选择了t1表存放生成的数据。

提交记录数量,是每多少条数据提交一次,这里可以默认。

勾选指定数据库字段,否则下面没法设置:

然后切换到数据库字段选项卡,点击输入字段映射,会自动获取流入该Step中数据的各个字段名,以及该表中的字段名。

点击源字段中的某个字段,然后点击目标中的某个字段,然后点击add按钮,表示两者之间建立了一个映射,该源字段的值都存在对应的目标字段中。当源字段与目标字段的名字有相同字符串时,可以使用猜一猜,自动匹配,不过不保证准确性。

匹配完成,点击确定。

如上,这个转换就建立完成了,注意Ctrl+S保存。

Step9:运行该转换,查看结果:

点击:三角形按钮,表示执行

在弹出的窗口中,点“启动”即可。

成功执行后,出现如下信息:若失败,会出现红色的“×”,并且会在下面日志中记录错误的Step及错误信息。

查看t1表中有无数据:

如上,便成功生成了10000条测试数据。

kettle菜鸟学习笔记2----第一个kettle转换的建立及执行的更多相关文章

  1. kettle菜鸟学习笔记1----相关准备知识

    最近导师让给师弟师妹做个关于kettle的培训,瞬间囧了,kettle我也只是简单学过,连皮毛都算不上,而且,上次使用kettle已然是去年的事了…… 没办法,只好重新学习下,好在之前写了几个文档,也 ...

  2. kettle菜鸟学习笔记3----kettle数据库连接错误及解决

    数据库连接测试时,所有的参数信息都填写正确,却报错了. 或者,没有进行数据库连接测试,直接保存了当前数据库连接,然后在浏览,选择目标表时报错: 或者其他别的关于数据库连接的错误…… 第一个要考虑的就是 ...

  3. C#.NET学习笔记2---C#.第一个C#程序

    C#.NET学习笔记2---C#.第一个C#程序 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com 6.第一个C#程序:   ...

  4. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  5. Unity3D学习笔记2——绘制一个带纹理的面

    目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 ...

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

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

  7. MiZ702学习笔记12——封装一个普通的VGA IP

    还记得<MiZ702学习笔记(番外篇)--纯PL VGA驱动>这篇文章中,用verilog写了一个VGA驱动.我们今天要介绍的就是将这个工程打包成一个普通的IP,目的是为后面的一篇文章做个 ...

  8. Java菜鸟学习笔记--数组篇(三):二维数组

    定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...

  9. [原创]java WEB学习笔记12:一个简单的serlet连接数据库实验

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. C语言中结构体 自引用 和 相互引用

    http://blog.163.com/modingfa_002/blog/static/11092546620133193264579 结构体的自引用(self reference),就是在结构体内 ...

  2. 编写你自己的单点登录(SSO)服务

    王昱 yuwang881@gmail.com   博客地址http://yuwang881.blog.sohu.com 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统其中.本文从 ...

  3. JavaScript中伪协议 javascript:研究

    将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的 ...

  4. osg轮廓特效 【转】

    // -*-c++-*- /* * OpenSceneGraph - Copyright (C) 1998-2003 Robert Osfield * * This library is open s ...

  5. [NodeJS] Deploy a Node Application with the Now CLI

    Now offers a friction-free way to deploy node applications right from the terminal. In this lesson, ...

  6. shell 编程中使用到得if语句内判断参数

    http://blog.chinaunix.net/uid/21411227/cid-63616-list-1.html 1.判断文件类型   –b 当file存在并且是块文件时返回真 -c 当fil ...

  7. Linux下判断cpu物理个数、几核

    自己服务器的输出 1. 查看物理CPU的个数   #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l    1 2. 查 ...

  8. Linux中/usr与/var目录详解

    /usr文件系统 /usr 文件系统经常很大,因为所有程序安装在这里. /usr 里的所有文件一般来自Linux distribution:本地安装的程序和其他东西在/usr/local 下.这样可能 ...

  9. tachyon 集群安装

    tachyon的集群安装和单机安装差别不大 http://www.cnblogs.com/admln/p/tachyon-local-install.html 不同的地方 1.修改slaves时填入所 ...

  10. WinForm的延时加载控件概述

    这篇文章主要介绍了WinForm的延时加载控件,很实用的技巧,在C#程序设计中有着比较广泛的应用,需要的朋友可以参考下   本文主要针对WinForm的延迟加载在常用控件的实现做简单的描述.在进行C# ...