kettle实战教程-纯实战开发

article/2025/10/13 14:13:37

kettle实战教程-纯实战开发

欢迎关注笔者的公众号: java大师, 每日推送java、kettle运维等领域干货文章,关注即免费无套路附送 100G 海量学习、面试资源哟!!个人网站: http://www.javaman.cn/kettle/kettle-actual

在这里插入图片描述

Kettle简介:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。(引用百度百科)

文章目录

  • kettle实战教程-纯实战开发
    • 前言
      • **一、安装并进行第一个实例**
      • **二、KETTLE读取数据库自动生成文件**
      • **三、KETTLE多表关联的同步一张表的两种实现方式**
      • **四、数据定时自动(自动抽取)同步作业**
      • 5、运行转换,双击start,设置作业定时调度,设置完成后,运行转换

前言

KETTLE到底难不难呢,其实不难!!!!

有很多人看着数量庞大的控件更是无从下手,这个控件是干嘛呢,那个控件是干嘛的?为什么这玩意能做下面这些事情

可以说凡是有数据整合、转换、迁移的场景都可以使用KETTLE,他代替了完成数据转换任务的手工编码,降低了开发难度,每个人都可以是开发人员,都可以做大数据!

下面是笔者原创的一整套学习流程

同时笔者公众号还有更加让人容易理解的视频教程,完全实战级开发,关注【JAVA大师】回复【kettle】关键字获取

一、安装并进行第一个实例

1、Kettle的下载与安装(在本文中使用的kettle版本为7.0.0.0-25)


2、打开kettle,kettle打开的前提是你的机器上一定要安装jdk。解压后,双击spoon.bat,进入kettle的主界面。


img

3、新建转换


1)新建转换

img

2)转换创建后,进入下图界面,左边展示核心对象,右边白色框是主界面

img

3)点开输入,进入下图界面,选择表输入

img

4)将表输入拖入主界面

img

5)双击表输入,进入表输入的主界面

img

6)修改步骤名称,点击新增修改数据库连接,进入新增界面,输入完毕后,点击确认。

img

过程中,可能提示缺少ojdbc的jar包,下载后放入lib文件夹即可。

img

7)进入主界面,双击表输入,点击预览,点击确定即可显示表内容。

img
img

二、KETTLE读取数据库自动生成文件

在平时工作当中,会遇到以下情况:

1、自动生成文件TXT或者EXCEL(电信行业该需求居多),上传至某服务器;

2、双方数据对接,对方提供数据库视图

1、自动生成EXCEL文件


img

1)如上图,选择表输入(读取视图或者table数据),EXCEL输出(准备输出的EXCEL文件),连接两个控件。

img
2)配置数据库连接(上节有介绍jdbc),后续可以通过jndi进行连接,通过配置实现(如同springmvc的配置)。

写出查询sql语句,点击预览,查看sql语句是否报错,如果没有报错,会展示如下预览界面

img

3)双击EXCEL输出,进入EXCEL配置界面,如下图

img

4)点击浏览,配置生成文件的路径和文件名,指定日期格式可以在文件名称后添加日期,非常适合定期生成文件需要

img

5)选到内容页,追加代表在文件后进行追加操作,不覆盖源文件

img

6)点击获取字段,会自动填入前面步骤查询的表字段,生成的是BigNumber类型的id,如果想要数字型的可以修改为Integer,全部填写完毕后,点击确认

img

7)点击运行
img

8)会自动生成如下EXCEL文件

img


2、自动生成TXT文件


img

1)如上图,将excel换成txt,shift连接后,双击鼠标左键打开配置,输入文件名
img

2)切换到内容,比较常见的是选择分隔符,本文用常见的|代替,

img

3)字段选项,获取字段,选择相应的字段格式,点击确定

img

img

4)如图所示,生成完毕


三、KETTLE多表关联的同步一张表的两种实现方式

在平时工作当中,会遇到这种情况,而且很常见:

读取对方的多个视图或者表,写入目标库的一张表中,就涉及到多表的同步。

多表同步可以有以下两种方式实现,接下来笔者就给大家分别介绍下实现方式:

方式一:多表关联查询后,写入一张表

1、根据这两张表的数据,表有学生表和班级表,写入目标表:学生班级表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7AhWj8Kf-1614843931373)(https://img2018.cnblogs.com/blog/1891116/201912/1891116-20191210184533589-1648174455.png)]

2、选择表输入,双击表输入,在sql一栏里写入关联sql语句,点击预览后,查询出相关数据,点击确定


3、在核心对象中,选择表输出,按住shift键,鼠标连接表输入和表输出,双击表输出,选择数据库连接,选择目标表和提交数量点击确定

4、点击运行按钮,写入成功


5、验证成功,数据已经写入相关表


方式二:如图所示,需要创建表输入1(学生),表输入2(班级),记录集连接(连接学生和班级表),表输出(写入目标表)

1、表输入1,获取相应的写入字段

2、表输入2,获取班级相应的写入字段

3、表输入1和表输入2,同时按住shift连接记录集连接控件后,点击记录集连接控件,输入连接字段1和连接字段2,连接类型选择inner(数据库相关知识)

4、最后连接表输出,选择数据库字段后(必须和目标表的表结构一致),点击确认

5、双击运行,执行完毕,到数据库验证通过


四、数据定时自动(自动抽取)同步作业

1、为了给大家更直观的展示,首先在数据库创建4张表,表结构如下:

  • t_student_kettle 学生数据源表;
  • t_student_kettle_target 学生目标数据表;
  • t_class 班级数据源表;
  • t_class_target 班级 班级目标数据表;
  • t_tbrz 同步日志表

[复制代码](javascript:void(0)😉

--1、学生数据源表
-- Create table
create table T_STUDENT_KETTLE
(id     INTEGER,name   VARCHAR2(2000),sex    VARCHAR2(2000),age    INTEGER,cjsj   DATE,zhgxsj DATE default sysdate
)
tablespace MYSPACEpctfree 10initrans 1maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents unlimited);--学生目标数据表
-- Create table
create table T_STUDENT_KETTLE_TARGET
(id     INTEGER,name   VARCHAR2(2000),sex    VARCHAR2(2000),age    INTEGER,cjsj   DATE,zhgxsj DATE default sysdate
)
tablespace MYSPACEpctfree 10initrans 1maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents unlimited);--班级数据源表
-- Create table
create table T_CLASS
(id     NUMBER,class  VARCHAR2(100),cjsj   DATE,zhgxsj DATE
)
tablespace MYSPACEpctfree 10initrans 1maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents unlimited);--班级目标数据表
-- Create table
create table T_CLASS_TARGET
(id     NUMBER,class  VARCHAR2(100),cjsj   DATE,zhgxsj DATE
)
tablespace MYSPACEpctfree 10initrans 1maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents unlimited);-- 同步日志表-- Create tablecreate table T_TBRZ(  id     NUMBER,  --id  tbcgsj DATE,    --同步成功时间(结束时间)  tbkssj DATE,    --同步开始时间  bm     VARCHAR2(100),   --同步表名  tbjg   CHAR(1)   --同步结果:1-成功;2-未成功)tablespace MYSPACE  pctfree 10  initrans 1  maxtrans 255  storage  (    initial 64K    next 1M    minextents 1    maxextents unlimited  );--创建同步日志表的序列create sequence SEQ_T_TBRZminvalue 1maxvalue 999999999start with 81increment by 1cache 20;

[复制代码](javascript:void(0)😉

2、配置数据库连接地址,一般项目上会通过配置jndi数据源直接连接数据库,不在配置jdbc数据源了,有点类似于java的配置

img

3、设置数据库连接,通过JNDI方式

img

4、作业整体流程

img

需要用到1个作业和6个转换来操作2张表,一个表是3个转换来完成,几张表总共的转换就是N*3个转换。

下图为整个作业的流程:

img

由上面流程图可以看到,start分了两个分支,一个是class表,一个是student表,下面我们来一一点开每个转换看下。

1)T_CLASS数据变量设置

img

如上图,T_CLASS数据变量设置,该步骤是获取上次同步的成功时间,做为下次同步的开始时间,并设置到环境变量中,供后续的数据流调用

2)T_CLASS数据变量设置

img

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a7uuGFTG-1614843931391)(https://img2018.cnblogs.com/i-beta/1891116/201912/1891116-20191228104936919-554487108.png)]

如上图,T_CLASS数据更新步骤,该步骤是获取上次同步的成功时间之后的数据,插入更新到表中。

3)T_CLASS保存同步日志

img

img

如上图,T_CLASS保存同步日志,该步骤是保存本次同步的同步成功时间,插入到同步日志表中,为下次同步的开始时间做准备,具体sql如下

img View Code

3)T_CLASS同步成功

img

如上图,T_CLASS同步步骤成功后,写入该成功步骤,提示成功。

5、T_STUDENT_KETTLE表的数据同步工作,如同T_CLASS表一样,存在3个转换步骤

img

5、运行转换,双击start,设置作业定时调度,设置完成后,运行转换

img

img

6、运行结果,运行成功和运行失败有不同的结果展示,可以根据此结果进行错误排除

img

注意:因某些限制,最新源代码和后续通用配置实现数据抽取 已放置在笔者公众号上,请关注微信公众号: 【JAVA大师】, 回复关键字:【实例】,获取kettle安装程序和运行实例(表结构和kjb、ktr文件)

同时笔者原创了一套视频教程:现免费发放100套,先到先得。获得方法:扫描下方二维码,关注获得

KETTLE实战视频教程--单表增量同步的教程,详细又免费,白嫖!!

在这里插入图片描述


http://chatgpt.dhexx.cn/article/yDbM43I8.shtml

相关文章

Kettle安装及配置

安装环境说明 jdk 采用 jdk-8u102-windows-x64 kettle采用kettle 8.2 文末,博主会将kettle下载地址附上,还包含其他版本(作为本专栏开博小福利)。kettle9.0版本以下,本教程都适用,kettle9.0及更新的其他版本…

Kettle的安装和使用

Kettle简介 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。 Kettle是“Kettle E.T.T.L. Envirnonment“只取首字母的缩写,这意味着它被设计用来帮助你实现你的 ETTL 需要&#…

Kettle 使用详解

第0章 ETL简介 ETL (Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可…

Kettle基础操作

目录 Kettle基础操作 1 启动Kettle 2 创建本地资源库 3 基础操作 3.1 新建转换 3.2 新建作业 3.3 节点连接 4 导入/导出资源库 5 创建数据库连链接 Kettle基础操作 1 启动Kettle 前置环境:JDK 1.7以上、IE浏览器升级至IE10以上(Kettle7.0以下…

kettle(一)kettle介绍

kettle介绍及组成 一、kettle 是什么 kettle 是一个ETL工具,ETL(Extract-Transform-Load,数据抽取、转换、装载); kettle 是java编写,绿色无需安装,抽取高效稳定; kettle 主要用来…

Kettle下载与安装教程【保姆版】

Kettle简介 Kettle最早是一个开源的ETL(Extract-Transform-Load的缩写)工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。后来Kettle重命名为Pentaho Data Integration 。它由Java开发,支持…

kettle基础教程-kettle9教程

kettle是啥? 一款免费开源的、功能强大的ETL工具,纯 java 开发。可以在 Linux、windows、unix 中运行。有图形界面,也有命令脚本还可以二次开发。 一.安装部署 1.JDK1.8安装及环境变量的配置 https://blog.csdn.net/weixin_39549656/artic…

kettle 简介及入门

介绍 kettle 是纯 java 开发,开源的 ETL工具,用于数据库间的数据迁移 。可以在 Linux、windows、unix 中运行。有图形界面,也有命令脚本还可以二次开发。 kettle 的官网是 https://community.hitachivantara.com/docs/DOC-1009855&#xff…

kettle 使用教程(入门)

文章目录 前言一、下载、安装二、启动软件三、转换的使用教程四、作业的使用教程总结 前言 Kettle简介:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶&…

kettle 教程(一):简介及入门

介绍 kettle 是纯 java 开发,开源的 ETL工具,用于数据库间的数据迁移 。可以在 Linux、windows、unix 中运行。有图形界面,也有命令脚本还可以二次开发。 kettle 的官网是 https://community.hitachivantara.com/docs/DOC-1009855&#xff0…

kettle入门教程

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工…

kettle使用教程(超详细)

今天详细详细说一下kettle 的安装,安装的版本: jdk:jdk-8u152-windows--x64 kettle:KETTLE-5.4 一、环境部署 1、安装JDK,按默认值安装即可 2、设置环境变量,如图下图 具体步骤: 1.右击我的电脑-属性-高级系统设置-环境变量-系统变量-新建…

HMC5883L地磁传感器驱动

霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器,并附带霍尼韦尔专利的集成电路包括放大器、自动消磁驱动器、偏差校…

Arduino Uno + HMC5883L电子罗盘 实验

实现 HMC5883L 电子罗盘 简单的数据读取实验 实验效果 本实验&#xff0c;简单显示从HMC5883L 读取到的数据 BOM表 Arduino Uno * 1 HMC5883L&#xff08;gy-273&#xff09; * 1 跳线若干 接线图 Arduino Uno <----> HMC5883L 5v …

【模块学习】关于磁力计HMC5883L型号探索

关于磁力计HMC5883L型号探索 一&#xff0e;序言 在众多磁力计中&#xff0c;HMC5883L因为其廉价实用而受到大多数嵌入式开发小白的追捧。然而某宝上不仅仅有HMC5883L这一款&#xff0c;还有QMC5883和HMC5983&#xff0c;常有商家搞不清芯片就出售&#xff0c;导致提供的数据手…

HMC5883Lnbsp;磁力计校准

原文地址&#xff1a;HMC5883L 磁力计校准 作者&#xff1a;WalkAnt 这里针对 HMC5883L 磁力计 的校准&#xff0c;做一个简单讲解。欢迎交流&#xff0c;新浪长沙WalkAnt。 先看看这篇文章&#xff1a;http://blog.sina.com.cn/s/blog_8240cbef0101i7gn.html 如果磁力计在含有…

【51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计

目录 硬知识简介操作模式HMC5883L连续测量模式单次测量模式闲置模式 QMC5883L连续测量模式待命模式 主要差异寄存器寄存器列表HMC5883LQMC5883L 配置寄存器HMC5883L配置寄存器 A配置寄存器 B模式寄存器 QMC5883L控制寄存器1控制寄存器2SET/RESET Period Register 数据输出寄存器…

ESP32设备驱动-HMC5883L磁场传感器驱动

HMC5883L磁场传感器驱动 1、HMC5883L介绍 霍尼韦尔 HMC5883L 是一款表面贴装、多芯片模块,专为低场磁场传感而设计,具有数字接口,适用于低成本罗盘和磁力计等应用。 HMC5883L 包括我们先进的高分辨率 HMC118X 系列磁阻传感器和一个 ASIC,该 ASIC 包含放大、自动消磁带驱动…

STM32读取HMC5883L的偏航角数据

HMC5883L是一种IIC通信的电子罗盘芯片&#xff0c;输出与北的角度偏差&#xff0c;数值是0-360度&#xff0c;靠西方向增长&#xff0c;可以理解为逆时针为正。配合GPS模块简直就是四轴飞行器的铁杆标配。 5883的初始化 HMC5883L也是一个IIC器件&#xff0c;具体的操作方式和…

HMC5883L 磁力计校准

原文地址&#xff1a; http://blog.sina.com.cn/s/blog_402c071e0102v8ie.html 这里针对 HMC5883L 磁力计 的校准&#xff0c;做一个简单讲解。欢迎交流&#xff0c;新浪长沙WalkAnt。 先看看这篇文章&#xff1a;http://blog.sina.com.cn/s/blog_8240cbef0101i7gn.html 如果磁…