kettle入门教程

目录

1.kettle叙述

1.1什么是kettle

1.2kettle工程存储方式

1.3kettle两种设计

1.4kettle的组成

1.5kettle的下载安装

2.kettle教程

2.1转换

2.1.1普通转换

2.1.2执行sql脚本

2.1.3条件判断Switch Case

2.1.4自定义java代码

2.2作业

1.kettle叙述

1.1什么是kettle

Kettle是一款开源的ETL(Extract-Transform-Load)工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

1.2kettle工程存储方式

(1)以XML形式存储
(2)以资源库方式存储(数据库资源库和文件资源库)

1.3kettle两种设计

Transformation(转换):完成对数据的基本转换

Job(工作):完成整个工作流的控制

区别:

(1)作业是步骤流,转换是数据流。

(2)作业的每一个步骤必须要等到前面的步骤都跑完了,后面的步骤才会执行,而转换会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录一条记录的流向最后控件。

1.4kettle的组成

kettle入门教程_第1张图片

1.勺子(Spoon.bat/spoon.sh) :是-个图形化的界面,可以让我们用图形化的方式开发转换和作业。windows选择.bat; Linux选择.sh。
2.煎锅(Pan.bat/pan.sh) : 利用Pan可以用命令行的形式调用Trans。
3.厨房(Kitchen batkitchen.sh) : 利用Kitchen可以使用命令行调用]ob
4.菜单(Carte.bat/ Carte.sh): Carte是一 个轻量级的Web容器,用于建立专用、远程的ETL Server。

1.5kettle的下载安装

kettle中文官网

将mysql驱动和oracle驱动放在kettle包下面的lib包下面即可。

kettle入门教程_第2张图片

2.kettle教程

2.1转换

2.1.1普通转换

-- oracle脚本
create tablespace kettle
datafile 'Z:\oracle\oracle_data\tablespace\kettle.dbf'
size 10m
autoextend on
next 10m

create user kettle
identified by kettle
default tablespace kettle

grant dba to kettle;

create table flower(
       id varchar2(32)  default sys_guid() primary key,
       flower_name varchar2(200),
       color varchar2(100),
       origin varchar2(200),
       moral varchar2(200),
       create_time timestamp default sysdate,
       update_time timestamp
);

-- 数据
insert all
into flower(flower_name,color, moral, update_time)
values('红玫瑰', 'red', '热恋与浓烈的爱', sysdate)

into flower(flower_name,color, moral, update_time)
values('紫玫瑰', 'purple', '深沉守护的爱情', sysdate)

into flower(flower_name,color, moral, update_time)
values('白玫瑰', 'white', '纯洁、纯真的爱', sysdate)

into flower(flower_name,color, moral, update_time)
values('粉玫瑰', 'pink', '初恋、宠爱', sysdate)

into flower(flower_name,color, moral, update_time)
values('黄玫瑰', 'yellow', '已逝的爱、为爱道歉', sysdate)

into flower(flower_name,color, moral, update_time)
values('香槟玫瑰', 'Milky yellow', '爱上你是我今生最幸福的', sysdate)

into flower(flower_name,color, moral, update_time)
values('白色郁金香', 'white', '纯洁无暇', sysdate)
into flower(flower_name,color, moral, update_time)
values('红色色郁金香', 'red', '热情与喜爱', sysdate)
into flower(flower_name,color, moral, update_time)
values('粉色郁金香', 'pink', '幸福与怜爱', sysdate)
into flower(flower_name,color, moral, update_time)
values('紫色郁金香', 'purple', '神秘与高贵', sysdate)

into flower(flower_name,color, moral, update_time)
values('向日葵', 'yellow', '沉默的爱', sysdate)

into flower(flower_name,color, moral, update_time)
values('满天星', 'write、blue、purple、pink、', '甘愿做配角,默默爱着一个人', sysdate)


into flower(flower_name,color, moral, update_time)
values('百合', 'write、purple、pink、yellow、black、golden', '百年好合、美好家庭、深深祝福', sysdate)

into flower(flower_name,color, moral, update_time)
values('康乃馨', 'write、yellow、purple、pink、', '爱、美丽、尊敬之情', sysdate)

into flower(flower_name,color, moral, update_time)
values('洋桔梗', 'write、purple、pink、', '纯洁、感激和真诚的爱', sysdate)


into flower(flower_name,color, moral, update_time)
values('洋牡丹', 'write、yellow、purple、pink、', '爱、美丽、尊敬之情', sysdate)

into flower(flower_name,color, moral, update_time)
values('白色紫罗兰', 'write、', '想和爱人更近一步', sysdate)

into flower(flower_name,color, moral, update_time)
values('紫色紫罗兰', 'purple', '永恒的美', sysdate)

into flower(flower_name,color, moral, update_time)
values('蓝色紫罗兰', 'blue', '永恒的美', sysdate)
into flower(flower_name,color, moral, update_time)
values('勿忘我', 'write、yellow、purple、pink、blue', '爱、美丽、尊敬之情', sysdate)
select * from dual;

 a.在主对象树->DB连接,创建两个DB连接,这里用oracle和mysql数据库进行转换

kettle入门教程_第3张图片

kettle入门教程_第4张图片

 b.核心对象->输入,选择表输入

kettle入门教程_第5张图片

 kettle入门教程_第6张图片

 kettle入门教程_第7张图片

c.核心对象->输出,选择插入/更新,并且按住Shift将输入和输出连接起来

kettle入门教程_第8张图片 kettle入门教程_第9张图片

kettle入门教程_第10张图片

kettle入门教程_第11张图片

2.1.2执行sql脚本

a.建两个DB连接和上面步骤一样

b.选择核心对象->表输入,选择表输出,并双击配置sql查询语句

kettle入门教程_第12张图片

 kettle入门教程_第13张图片

 c.选择核心对象->脚本,选择sql脚本,按钮Shift将输入和脚本连接起来

kettle入门教程_第14张图片

 kettle入门教程_第15张图片

 d.执行即可

kettle入门教程_第16张图片

kettle入门教程_第17张图片

2.1.3条件判断Switch Case

a.还是建两个DB数据库连接

b.核心对象->表输入,双击对表输入进行sql配置

kettle入门教程_第18张图片

 kettle入门教程_第19张图片

 b.核心对象->流程,选择Switch/Case,按住Shift将表输入和Sitch/Case连接起来

kettle入门教程_第20张图片

kettle入门教程_第21张图片

 ORIGIN值为空执行sql脚本,否则执行插入/更新操作。

 d.一个分支选择插入/更新,一个分支选择sql脚本

kettle入门教程_第22张图片

kettle入门教程_第23张图片

kettle入门教程_第24张图片

kettle入门教程_第25张图片

kettle入门教程_第26张图片

2.1.4自定义java代码

a.创建两个DB连接

b.核心对象->表输入,进行sql配置

kettle入门教程_第27张图片

 kettle入门教程_第28张图片

c.核心对象->脚本,选择Java代码,按住Shift将表输入和Java代码连接起来,配置Java代码

kettle入门教程_第29张图片

 选择Main,再进行自定义java代码

kettle入门教程_第30张图片 

 Java没有写好确定,测试类->确定前是没有数据的,会提示异常信息,打不开dialog框,属于正常。kettle入门教程_第31张图片

 启动执行,可以查看预览数据,但是不会改变源数据表里面的内容。

kettle入门教程_第32张图片kettle入门教程_第33张图片

 如果产生了新的字段需要进行配置,上面用到还是表中的字段,下面是产生了新的表字段,不会改变原表数据。

kettle入门教程_第34张图片

kettle入门教程_第35张图片

2.2作业

a.文件->新建->作业

kettle入门教程_第36张图片

kettle入门教程_第37张图片

kettle入门教程_第38张图片

kettle入门教程_第39张图片

 开始表里没有数据的,执行以后将数据进行插入,再次执行会进行字段更新,根据转换设置的那些需要更新的字段进行更新kettle入门教程_第40张图片

你可能感兴趣的:(kettle,etl)