分享

Kettle(二):连接SQL Server数据库

 小雪初晴i 2022-11-25 发布于河北

前言

上一篇文章讲到Kettle的安装部署,假设JDK已装好,Kettle的spoon可以正常打开。本文我们选取SQL Server作为数据源,来探讨怎样使用Kettle。

Kettle主要包含两大部分,下面用案例来讲怎样创建转换transform和作业job。

1.转换transform:完全针对数据的基础进行转换
2.作业job:整个工作流的控制

数据准备:

--建数据库CXJ_kettle
drop database CXJ_kettle if exist;create database CXJ_kettle if not exist;use CXJ_kettle--建表stu1
drop table stu1;create table stu1(id int ,name varchar(20),age int);--建表stu2
drop table stu2;create table stu2(id int,name varchar(20));--插入数据
insert into stu1 values(1001,'Ding',20),(1002,'Bella',21),(1003,'Icey',22);insert into stu2 values(1001,'Icey');--查询表数据select * from stu1;select * from stu2;

SSMS查询结果:
stu1:
在这里插入图片描述

stu2:
在这里插入图片描述

案例

需求背景:把表stu1的数据按照id同步到stu2,stu2有相同的id则更新数据。

1.1 连接数据源

准备数据库驱动包

由于 kettle 需要连接数据库,因此需要下载对应的数据库驱动包。本文章连接的数据源是SQL Server,去网址jTDS - SQL Server and Sybase JDBC driver(https:///projects/jtds/)下载 jtds包,解压后,将文件夹下的 jar 文件“jtds-1.3.1”复制到kettle 解压后路径的 Kettle/data-integration/lib 文件夹中,重新启动kettle。
在这里插入图片描述

若Kettle连接MySQL 数据源,则需要下载 mysql-connector-java.jar,下载网址为:Download MySQL Installer(https://dev./downloads/windows/installer/8.0.html)。

若Kettle连接Oracle数据源,则需要下载ojdbc.jar,可参考:kettle连接Oracle数据库教程
下载完成后,将 jar包放入 kettle 解压后路径Kettle/data-integration/lib文件夹中,重新启动kettle即可。

1) 新建转换:选择“转换”—>单击鼠标右键—>新建
在这里插入图片描述
2) 新建数据库连接
在这里插入图片描述
3) 数据库连接设置

主机名称:IP地址或localhost
端口号: 默认显示
用户名和密码:SQL Server数据库登录账号密码

在这里插入图片描述
测试连接成功页面如下:
在这里插入图片描述

数据库连接成功后,选中该连接,右键“共享”此连接。
在这里插入图片描述

Issue: 测试SQL Server连接出现以下报错怎么办?

报错1:

Driver class 'net.sourceforge.jtds.jdbc.Driver’could not be found,make sure the 'MS SQL Server’driver (jar file)is installed .net.sourceforge.jtds.jdbc.Driver
在这里插入图片描述

解决:
这是提醒你未将SQL Server对应的数据库驱动包放在Kettle的lib文件夹下,详细可参考上文“准备数据库驱动包”环节。

报错2:

Connection failed. Verify all connection parameters and confirm that the appropriate driver is installed.
Network error IOException: Connection timed out: connect
在这里插入图片描述

解决:

我在创建数据库连接时这里的主机名称填的不是localhost,而是主机IP,一开始运行转换没有报错,但一周后再次运行就报错如下,cmd检查自己的主机IP地址,发现IP已发生改变,用新IP重新测试,发现能够连接成功。
如果数据库安装在本地,建议此处主机名称填" localhost "。
在这里插入图片描述

1.2 创建转换transform

流程:

1)假设已创建好转换,并且数据库连接成功。

2)画转换流程图:在“输入”选项下找到“表输入”拖到右边画布区;在“输出”选项下找到“插入/更新”拖到右边画布区;按住shift键,长按鼠标左键移动鼠标,可以连接两个控件,得到流程图如下。

在这里插入图片描述

3)设置控件:
双击“表输入”,设置如下
在这里插入图片描述

双击“插入/更新”,设置如下。(下图选项若勾上,则出现相同数据不执行任何操作,否则出现相同数据就更新)
在这里插入图片描述

4)点击启动,提示保存,保存为转换“CXJ_kettle_transform”,绿色对勾表示成功。
在这里插入图片描述

SSMS刷新数据库,查询结果如下:
在这里插入图片描述

1.3 创建作业job

需求背景:创建作业执行上述转换“CXJ_kettle_transform”,并且额外在表Stu2中添加一条数据(1004,'Amy’)

流程:

1)新建作业 :**选择“作业”—>单击鼠标右键—>新建
在这里插入图片描述

2)画作业流程图 :在“通用”选项下找到“Start”、“转换”、“Dummy”拖到右边画布区;在“脚本”选项下找到“SQL”拖到右边画布区;
按住shift键,长按鼠标左键移动鼠标,可以连接这些控件,得到流程图如下。
在这里插入图片描述
在这里插入图片描述

3)设置控件
双击“转换”,浏览填入上文保存的转换。
在这里插入图片描述

双击“SQL”,设置如下,插入SQL脚本“insert into stu2 values (1004,'Amy’)”。
在这里插入图片描述

4)点击启动
在这里插入图片描述
在这里插入图片描述
作业执行成功:
在这里插入图片描述
SSMS刷新数据库,查询结果如下:
在这里插入图片描述
总结:

作业job是对整个工作流的控制,可以定时,一个作业可以包含多个作业项,转换transform只是其中一个作业项。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多