目录
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作业
Kettle是一款开源的ETL(Extract-Transform-Load)工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
(1)以XML形式存储
(2)以资源库方式存储(数据库资源库和文件资源库)
Transformation(转换):完成对数据的基本转换
Job(工作):完成整个工作流的控制
区别:
(1)作业是步骤流,转换是数据流。
(2)作业的每一个步骤必须要等到前面的步骤都跑完了,后面的步骤才会执行,而转换会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录一条记录的流向最后控件。
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。
kettle中文官网
将mysql驱动和oracle驱动放在kettle包下面的lib包下面即可。
-- 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数据库进行转换
b.核心对象->输入,选择表输入
c.核心对象->输出,选择插入/更新,并且按住Shift将输入和输出连接起来
a.建两个DB连接和上面步骤一样
b.选择核心对象->表输入,选择表输出,并双击配置sql查询语句
c.选择核心对象->脚本,选择sql脚本,按钮Shift将输入和脚本连接起来
d.执行即可
a.还是建两个DB数据库连接
b.核心对象->表输入,双击对表输入进行sql配置
b.核心对象->流程,选择Switch/Case,按住Shift将表输入和Sitch/Case连接起来
ORIGIN值为空执行sql脚本,否则执行插入/更新操作。
d.一个分支选择插入/更新,一个分支选择sql脚本
a.创建两个DB连接
b.核心对象->表输入,进行sql配置
c.核心对象->脚本,选择Java代码,按住Shift将表输入和Java代码连接起来,配置Java代码
选择Main,再进行自定义java代码
Java没有写好确定,测试类->确定前是没有数据的,会提示异常信息,打不开dialog框,属于正常。
启动执行,可以查看预览数据,但是不会改变源数据表里面的内容。
如果产生了新的字段需要进行配置,上面用到还是表中的字段,下面是产生了新的表字段,不会改变原表数据。
a.文件->新建->作业