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


    前言

    上一篇文章讲到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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

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

    stu2:
    在这里插入图片描述

    案例

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

    1.1 连接数据源

    准备数据库驱动包

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

    若Kettle连接MySQL 数据源,则需要下载 mysql-connector-java.jar,下载网址为:Download MySQL Installer

    若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只是其中一个作业项。

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    MySQL 定义条件与处理程序 的详细讲解
    【Java高级技术】单元测试——概述和快速入门
    接收灵敏度和等效噪声带宽(ENBW)
    java——类作为成员变量类型
    1.4.26 实验26:华为综合ACL
    Web前端大作业——基于HTML+CSS+JavaScript仿英雄联盟LOL游戏网站
    四.pyqt5 登录界面和功能
    SRM系统可以为企业带来什么价值?
    cubemx 使用 学习跳转链接
    【深度学习】卷积神经网络CNN
  • 原文地址:https://blog.csdn.net/m0_67400972/article/details/126074748