kettle


kettle

概述

什么是kettle

Kettle是一款开源的ETL工具,纯java编写。用于数据库间的数据迁移 。

可以在 Linux、windows、unix 中运行。

推荐学习网站

kettle中文网:https://www.kettle.net.cn/2794.html

参考博客:https://juejin.cn/post/6986507517022961695

安装

由于 kettle 是基于 java 的,因此需要安装 java 环境,并配置 JAVA_HOME 环境变量。

建议安装 JDK1.8 及以上,7.0以后版本的 kettle 不支持低版本 JDK。

8.2版下载地址:http://mirror.bit.edu.cn/pentaho/Pentaho%208.2/client-tools/

解压即用

目录说明

img

img

下载相应的数据库驱动

由于 kettle 需要连接数据库,因此需要下载对应的数据库驱动。

例如 MySQL 数据库需要下载 mysql-connector-java.jar,oracle 数据库需要下载 ojdbc.jar。下载完成后,将 jar 放入 kettle 解压后路径的 lib 文件夹中即可。

启动

双击 Spoon.bat 就能启动 kettle 。

转换

转换包括一个或多个步骤,步骤之间通过hop来连接。

hop定义了一个单向通道,允许数据从一个步骤流向另一个步骤。

在Kettle中,数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的移动

新建转换

  1. 打开 kettle,点击 文件->新建->转换。

在这里插入图片描述

数据库连接

  1. 在左边 DB 连接处点击新建。

在这里插入图片描述

  1. 根据提示配置数据库,配置完成后可以点击测试进行验证,这边以 MySQL 为例。

mysql5的话需要导入mysql-connector-java.jar对应的jar包

在这里插入图片描述

如果是mysql8则不需要导入jar包。

kettle默认使用的是org.gjt.mm.mysql.Driver,而mysql 8.0以上connector已经不再支持这个包名;

即使将mysql-connector-java-8.0.xx.jar包拷贝到data-integration/lib目录下,还是报错找不到驱动;

所以我们需要手动配置使用com.mysql.cj.jdbc.Driver作为驱动。

com.mysql.cj.jdbc.Driver兼容JDK8环境,不兼容JDK7环境,JDK版本不匹配时连接也会出错,如果服务器上JDK版本较低 要升级下

更新jdbc.properties文件,在simple-jndi目录下,新增新增jndi配置:

Myslq8_DB/type=javax.sql.DataSource
Myslq8_DB/driver=com.mysql.cj.jdbc.Driver
Myslq8_DB/url=jdbc:mysql://db_ip:3306/db_name?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
Myslq8_DB/user=db_user
Myslq8_DB/password=db_password

新建数据库连接,选择mysql数据库,选择JNDI,在JNDI名称中填入Myslq8_DB.

img

表输入

在左侧找到表输入(核心对象->输入->表输入),拖到右方。

在这里插入图片描述

  1. 双击右侧表输入,进行配置,选择数据源,并输入 SQL。可以点击预览进行预览数据。

在这里插入图片描述

在这里插入图片描述

插入更新

  1. 在左侧找到插入/更新(核心对象->输出->插入/更新),拖到右方。

在这里插入图片描述

  1. 按住 Shift 键,把表输入和插入/更新用线连接起来。

在这里插入图片描述

  1. 双击插入/更新进行配置。

在这里插入图片描述

  1. 点击运行,就可以运行这一个转换

在这里插入图片描述

这样就完成了一个最简单的转换,从一个表取数据,插入更新到另一个表。