ETL工具Spoon同步本地数据到数据库教程。
准备工作
MySQL数据库
这里以MySQL数据库为例。这里创建测试表
drop table if exists userinfo;
create table userinfo(
id int,
name varchar(20),
age int
);
Spoon
spoon界面:
我找的这个版本是8.2的,18年的版本。
所以它的连接mysql还是使用的旧的java的class:org.gjt.mm.mysql.Driver 然而现在用的是这个:com.mysql.cj.jdbc.Driver 创建mysql连接的时候可以发现会报错:
主要的问题就是spoon写死了driver class,且不可更改,就算选项中设置driver class但是还是无法生效,如下图:
这里采用两个方案,测试过都是可行的。
方法一:
需要先到官网下载jar包,然后放到data-integration\lib这个目录下。
这里我们把连接类型从MySQL修改为Generic database,连接方式同样为JDBC,输入正确的URL及class即可
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useUnicode=true
方法二: 用JNDI的方式进行连接,同样需要先下载jar包。 在kettle的安装路径下面找到simple-jndi文件夹,打开里面jdbc.properties文件,添加如下内容
mysql8_test/type=javax.sql.DataSource
mysql8_test/driver=com.mysql.cj.jdbc.Driver
mysql8_test/url=jdbc:mysql://mysql安装服务器的ip地址:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
mysql8_test/user=用户名
mysql8_test/password=密码
然后重启spoon,在配置数据库的时候连接方式选择JNDI,然后填上刚配置的名称即可。
数据准备
创建csv文件并填入数据:
id,name,age
1,Tom,10
2,Jerry,2
3,John,4
4,Jack,3
5,Orange,9
注意这里是有表头的。
spoon转换
- 新建转换文件
- 配置输入 因为数据存放在csv文件中,这里输入我们选择csv文件
双击进入编辑界面
填写完成如下图所示:
3.配置输出
因为是输出到MySQL中的,这里选择“插入/更新”
先将两个组件连接起来
然后就可以编辑“插入/更新”组件了
4.保存,运行之前需要保存
5.运行
运行结果:
查看数据库可以看到已经插入表了:
spoon作业(spoon job)
然后我们创建一个作业(job),把刚才的转换丢进去。
把这三个组件依次拖出来,按照图示连接好
转换组件的配置,这是刚才保存的转换的文件路径,如下图:
然后我们把userinfo整个表清空,因为不清空是看不到效果的,或者修改csv文件,新增几行新数据
truncate table userinfo;
然后保存执行即可
数据库结果: