Spoon01-同步csv到数据库

317 阅读2分钟

ETL工具Spoon同步本地数据到数据库教程。

准备工作

MySQL数据库

这里以MySQL数据库为例。这里创建测试表

drop table if exists userinfo;
create table userinfo(
id int,
name varchar(20),
age int
);

image.png

Spoon

spoon界面:

image.png

我找的这个版本是8.2的,18年的版本。

image.png

所以它的连接mysql还是使用的旧的java的class:org.gjt.mm.mysql.Driver 然而现在用的是这个:com.mysql.cj.jdbc.Driver 创建mysql连接的时候可以发现会报错:

image.png

主要的问题就是spoon写死了driver class,且不可更改,就算选项中设置driver class但是还是无法生效,如下图:

image.png 这里采用两个方案,测试过都是可行的。

方法一: 需要先到官网下载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

image.png

image.png

转载自:blog.csdn.net/qq_50828406…

方法二: 用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,然后填上刚配置的名称即可。 image.png

转载自:blog.csdn.net/Jwaein/arti…

数据准备

创建csv文件并填入数据:

id,name,age
1,Tom,10
2,Jerry,2
3,John,4
4,Jack,3
5,Orange,9

注意这里是有表头的。

spoon转换

  1. 新建转换文件

image.png

image.png

image.png

  1. 配置输入 因为数据存放在csv文件中,这里输入我们选择csv文件

image.png 双击进入编辑界面 image.png 填写完成如下图所示: image.png

3.配置输出 因为是输出到MySQL中的,这里选择“插入/更新” image.png 先将两个组件连接起来 image.png image.png

然后就可以编辑“插入/更新”组件了 image.png

4.保存,运行之前需要保存 image.png

5.运行 image.png 运行结果: image.png 查看数据库可以看到已经插入表了:

image.png

spoon作业(spoon job)

然后我们创建一个作业(job),把刚才的转换丢进去。

image.png

把这三个组件依次拖出来,按照图示连接好

image.png

转换组件的配置,这是刚才保存的转换的文件路径,如下图:

image.png

然后我们把userinfo整个表清空,因为不清空是看不到效果的,或者修改csv文件,新增几行新数据

truncate table userinfo;

然后保存执行即可

image.png

数据库结果:

image.png