Kettle简介

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。

Kettle是“Kettle E.T.T.L. Envirnonment“只取首字母的缩写,这意味着它被设计用来帮助你实现你的 ETTL 需要:抽取、转换、装入和加载数据;翻译成中文名称应该叫水壶,名字的起源是开发者希望把各种数据放到一个壶里然后以一种指定的格式流出。

Spoon 是一个图形用户界面,它允许你运行转换或者任务,其中转换是用 Pan 工具来运行,任务是用 Kitchen 来运行。Pan 是一个数据转换引擎,它可以执行很多功能,例如:从不同的数据源读取、操作和写入数据。Kitchen 是一个可以运行利用 XML 或数据资源库描述的任务。通常任务是在规定的时间间隔内用批处理的模式自动运行。

注:在正式进入本教程前,请确保你的计算机已经配置好java环境。

下载并安装Kettle

1.下载Kettle安装包

登陆ubuntu系统,用ubuntu系统的浏览器打开Kettle官网下载最新稳定版kettle压缩包,这里我们下载7.1版本。点击下图中的链接开始下载(压缩包有接近900M),下载完成后文件默认保存在路径~/Downloads或~/下载。

2.新建文件夹/usr/local/kettle

为了把kettle安装在目录/usr/local/kettle,这里我们先新建文件夹,并修改属主权限,以便当前用户可以操作该文件夹。

sudo mkdir -p /usr/local/kettle #递归方式新建文件夹

sudo chown -R dblab /usr/local/kettle #修改文件夹属主,使得dblab用户可以操作该文件夹

3.解压zip包

利用下列命令解压下载好的zip包,同时指定解压后的文件保存路径为/usr/local/kettle。

unzip ~/Downloads/pdi-ce-7.1.0.0-12.zip -d /usr/local/kettle #解压zip包,并将解压后的文件保存到/usr/local/kettle

4.复制MySQL驱动JAR包

后续需要连接MySQL数据库,因此需要相关的驱动JAR包。首先从官网下载MySQL驱动JAR包(两种压缩格式均可,笔者下载的是zip压缩格式),下载完成默认保存在目录~/Downloads或~/下载,利用下列命令将其解压,并将jar包复制到/usr/local/kettle/data-integration/lib

cd ~/Downloads

unzip mysql-connector-java-5.1.40.zip #解压到当前文件夹

cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/kettle/data-integration/lib #复制mysql驱动包到/usr/local/kettle/data-integration/lib

5.启动kettle

kettle的安装目录/usr/local/kettle下的文件夹data-integration里包含两个kettle工具启动的脚本命令,spoon.bat和spoon.sh,其中spoon.bat适用于windows系统,通过双击.bat文件来启动图形化界面,而spoon.sh适用于Linux系统,通过在终端执行下列命令来启动图形化界面。

cd /usr/local/kettle/data-integration

./spoon.sh #执行脚本

截图如下:

如果上述命令无法执行,提示无执行权限,请先执行下列命令为spoon.sh赋予执行权限。

chmod +x spoon.sh

启动之后,可能会弹框提示:用户缺少某某包,可能会导致程序无法正常使用。如果出现该提示,先关闭图形化界面,输入下列命令逐一安装这些包。

#示例:缺少libwebkitgtk-1.0包

sudo apt-get install libwebkitgtk-1.0

安装完成后,再次启动kettle工具即可。

使用Kettle

这里我们通过一个案例来了解kettle的使用,选取MySQL作为数据源。

案例背景

找出不同性别,不同年龄,不同职业的用户对于哪类产品比较感兴趣,为建立数据仓库,进行数据挖掘和OLAP分析做准备。根据客户user,订单orders,产品表product中的数据,利用kettle处理生成对应的数据文件,并且可以用job来调用整个流程。

数据准备

1.启动MySQL

service mysql start #启动mysql服务,默认mysql服务是随开机启动的,此步可省

mysql -u root -p

2.创建数据库kettle

mysql> create database kettle;

3.创建user,product,orders表,并插入测试数据

注:下列命令是在mysql shell中执行,每段sql语句(除#号注释行以外)都可以整段复制粘贴执行,无须逐句复制。

use kettle;

#------------创建表user

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`userid` int(10) DEFAULT NULL COMMENT '用户ID',

`username` varchar(10) DEFAULT NULL COMMENT '用户姓名',

`usersex` varchar(1) DEFAULT NULL COMMENT '性别',

`userposition` varchar(20) DEFAULT NULL COMMENT '职业',

`userage` int(3) DEFAULT NULL COMMENT '年龄'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#------------插入数据

INSERT INTO `user` VALUES ('1', '陈XX', '女', '学生', '20');

INSERT INTO `user` VALUES ('2', '王XX', '男', '工程师', '30');

INSERT INTO `user` VALUES ('3', '李XX', '女', '医生', '40');

#------------创建表product

DROP TABLE IF EXISTS `product`;

CREATE TABLE `product` (

`productid` int(10) DEFAULT NULL COMMENT '产品ID',

`productname` varchar(20) DEFAULT NULL COMMENT '产品名称'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#------------插入数据

INSERT INTO `product` VALUES ('1', '手机');

INSERT INTO `product` VALUES ('2', '电脑');

INSERT INTO `product` VALUES ('3', '水杯');

#------------创建表orders

DROP TABLE IF EXISTS `orders`;

CREATE TABLE `orders` (

`orderid` int(10) DEFAULT NULL COMMENT '订单ID',

`userid` int(10) DEFAULT NULL COMMENT '用户ID',

`productid` int(10) DEFAULT NULL COMMENT '产品ID',

`buytime` datetime DEFAULT NULL COMMENT '购买时间'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#------------插入数据

INSERT INTO `orders` VALUES ('1', '1', '1', '2017-06-01 15:02:02');

INSERT INTO `orders` VALUES ('2', '1', '2', '2017-06-02 15:02:22');

INSERT INTO `orders` VALUES ('3', '1', '3', '2017-06-02 15:02:36');

INSERT INTO `orders` VALUES ('4', '2', '1', '2017-06-06 15:02:52');

INSERT INTO `orders` VALUES ('5', '3', '2', '2017-06-09 16:55:24');

INSERT INTO `orders` VALUES ('6', '2', '2', '2017-07-14 14:01:36');

建立并执行作业

首先利用下列命令启动kettle

cd /usr/local/kettle/data-integration

./spoon.sh

接下来,开始使用kettle完成案例内容:将MySQL数据源里的三张表用户指定的信息输入到kettle,通过JOB执行转换,并输出一个文本文件。

1.建立作业JOB

1.1 新建转换并保存转换文件

右键-新建转换。

保存新建的转换文件,指定名称和保存路径。

1.2 连接数据库

选择MySQL作为数据源,双击“DB连接”,输入相关的认证信息,如数据库名、用户名和密码等。

点击测试按钮,测试是否连接数据库成功,如果连接成功,会弹出如下信息。

如果弹出如下信息,说明缺少mysql驱动包,请按照上一节的第4小节下载mysql驱动包,并复制到目录/usr/local/kettle/data-integration/lib,重新启动kettle即可。

1.3 切换到核心对象,拖动3个表输入控件到设计区域

表输入控件位于:核心对象-输入-表输入

1.4 双击表输入控件,设置表输入控件的属性信息

1.5 拖动2个流查询到设计区域,并设置流查询的属性信息

流查询控件位于:核心对象-查询-流查询

1.6 拖动1个文本文件输出到设计区域,并设置输出的属性信息

文本文件输出控件位于:核心对象-输出-文件文件输出

1.7 连接控件

按住shift键,长按鼠标左键移动鼠标,可以连接两个控件,按如下图所示关联个控件。

2.执行JOB

2.1 点击启动按钮执行JOB

点击设计区域上方的小三角形按钮,启动作业。

执行完成后出现下列界面表示执行成功。

如果出现下列界面表示作业建立出错,可以从日志栏获取相关错误信息。

2.2 查看执行结果

如果运行成功,目录/usr/local/kettle/data-integration下生成一个txt文件resultfile.txt,查看resultfile.txt其内容如下,表示执行成功,已经成功将MySQL数据库的这三张表的数据导出为指定格式的文件。

至此我们就完成了将MySQL的数据转化为kettle指定的文件格式,实验成功!

kettle使用数据库来生成序列_Kettle的安装和使用相关推荐

  1. kettle使用数据库来生成序列_kettle专题5:数据转换

    我们说kettle是个ETL工具,如果把前面讲的输入控件看成是E,把输出控件看成是L,那么数据转换控件就是T的能力. 数据转换控件就是将抽提的数据按照目标要求进行的合并.分拆.映射.计算.行列转换以及 ...

  2. kettle使用数据库来生成序列_Python办公自动化:使用python来自动生成word文档

    让python做办公自动化,让你闲下来 让python做自动化,让你闲下来 上节对python的excel Python办公自动化系列:自动操作Excel自动化做了介绍.这次介绍如何用python对w ...

  3. Kettle使用_17 计算器生成时间维度数据

    Kettle使用_17 计算器生成时间维度数据 需求: 通过Kettle的组件自动生成时间维的数据. 解决方法:结合增加序列.计算器.选择字段等组件解决,这里主要是通过计算器里的支持的计算类型来实现的 ...

  4. 数据库 测试数据生成_我们的测试数据生成器如何使假数据看起来真实

    数据库 测试数据生成 by Tom Winter 汤姆·温特(Tom Winter) 我们的测试数据生成器如何使假数据看起来真实 (How our test data generator makes ...

  5. 基于Visual Studio2010讲解LINQ读出数据库数据生成XML

    LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML.  LINQ to XML 最重要的优势是它与 Lang ...

  6. oracle 序列验证脚本,oracle 生成序列脚本

    今天在移植一个项目的的数据库时,要移动所有的序列,下面就是一个如何生成序列脚本的语句 方法一: SELECT ' CREATE SEQUENCE '||SEQUENCE_NAME|| ' INCREM ...

  7. Oracle数据库之创建序列

    @[TOC](Oracle数据库之创建序列) ##序列的创建 Oracle不像mysql一样可以创建自增的主键ID,所在在需要某一字段或者是主键自增的时候,我们就需要在Oracle中创建序列,一般创建 ...

  8. Paper:RNN之《Generating Sequences With Recurrent Neural Networks用循环神经网络生成序列》的翻译和解读

    Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...

  9. oracle数据库序列码,oracle 数据库中的序列

    序列是什么,通俗点说,序列就是按照一定顺序进行排列,序列会自动给你递增,生成唯一的序列号: oracle数据库不同于sqlServer数据库,oracle数据库中是没有自增长列,使用的是sequenc ...

最新文章

  1. linux 五种IO模型 简介
  2. 使用 el 能否定义作用域变量_Jsp之El表达和JSTL标签库
  3. 一 新开博客第一天,很开心哦!就写点简单的好了,那就数据类型、常量和运算符(c语言的)...
  4. unbtun python tab补全
  5. 详解阿里云第六代增强型实例,性能强劲,百万IOPS加持
  6. windows java 进程_windows下java -jar 后台运行以及杀死后台进程的操作
  7. C++basic_string(字符串类模板)
  8. 所需即所获:像 IDE 一样使用 vim
  9. 版本控制工具-Git
  10. android studio abc_list_selector_disabled_holo_light.9.png报错
  11. python中plt.hist_关于python中plt.hist参数的使用详解
  12. 常见的安全产品与服务整理
  13. JavaWeb网上书城项目
  14. oracle rac 停机,RAC停机重启方案
  15. GPU显卡服务器有什么作用,可应用哪些方面呢
  16. 玲珑杯Unity开发心得——进度条界面(异步加载游戏场景)
  17. JavaDay13 抽象类 、接口、多态
  18. During sturtup program exited with code 0xc0000139的解决办法!
  19. SpringBoot--访问静态页面
  20. veins车载通信仿真框架(3)--OMNET++基础

热门文章

  1. 【控制】《多无人机协同控制技术》周伟老师-第8章-危险状态下的无人机编队运动控制策略
  2. Nordic系列芯片讲解九 (BLE事件回调机制解析)
  3. ubuntu12.04中shell脚本无法使用source的原因及解决方法
  4. Linux vi/vim使用方法 总结
  5. java 自适应响应式 网站 源码 SSM 生成 静态化 手机 平板 PC
  6. 大数据发展新契机:中国人工智能产业创新联盟在京成立
  7. Arcgis API for JavaScript在地图上实现手机定位信息的追踪显示
  8. 【Java】Integer.valueOf()
  9. 秀一秀我的微软MVP(最有价值专家)的大礼包和水晶奖杯!
  10. 【经典C#.NET入门教程】管理软件开发必备知识免费视频教程下载