Kettle:連接SQL Server資料庫

00心平氣和00 發佈 2022-11-11T00:54:29.438448+00:00

本文我們選取SQL Server作為數據源,來探討怎樣使用Kettle。drop database CXJ_kettle if exist;

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;

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開發全套學習資料》送給大家,初衷也很簡單,就是希望幫助到想自學又不知道該從何學起的朋友,同時減輕大家的負擔。添加下方名片,即可獲取全套學習資料哦

關鍵字: