kettle實現 資料庫TestA中的UserA表到資料庫TestB的UserB表的資料拷貝
一、首先新建資料庫和相關表格
IF EXISTS(SELECT 1 FROM sysdatabases WHERE NAME=N'TestA') BEGIN DROP DATABASE TestA --如果資料庫存在先刪掉資料庫 END GO
CREATE DATABASE TestA go use TestA -- 建立一個測試的使用者表 create table usersA ( id int not null, userid varchar(50) not null, username varchar(200) null ) go -- 插入3條記錄 insert into usersA values(1,'lisi','李四'); insert into usersA values(2,'zhangsan','張三'); insert into usersA values(3,'lisi','李四'); go
use master IF EXISTS(SELECT 1 FROM sysdatabases WHERE NAME=N'TestB') BEGIN DROP DATABASE TestB --如果資料庫存在先刪掉資料庫 END GO CREATE DATABASE TestB use TestB -- 建立一個測試的使用者表 create table usersB ( id int not null, userid varchar(50) not null, username varchar(200) null ) go
二、kettl實現
功能簡述:資料庫TestA中的UserA表到資料庫TestB的UserB表;
實現流程:建立一個轉換和一個作業Job;
A:建立一個轉換:開啟Kettle.exe,選擇沒有資源庫,進入主介面,新建一個轉換,轉換的字尾名為ktr,轉換建立的步驟如下:
步驟1:建立DB連線,選擇新建DB連線,如下圖,我們輸入相應的Sqlserver配置資訊之後點選Test按鈕測試是否配置正確!
我們需要建立兩個DB連線,分別為TestA和TestB;
步驟2:建立步驟和步驟關係,點選核心物件,我們從步驟樹中選擇【表輸入】,如下圖,這樣拖拽一個表輸入之後,我們雙擊表輸入之後,我們自己可以隨意寫一個sql語句,這個語句表示可以在這個庫中隨意組合,只要sql語句沒有錯誤即可,我這裡只是最簡單的把TestA中的所有資料查出來,語句為select * from usersA。
接下來我們建立另外一個步驟【插入/ 更新】,然後在【表輸入】上同時按住shift鍵和滑鼠左鍵滑向【插入/ 更新】,這樣建立兩個步驟之間的連線,【插入/ 更新】執行的邏輯是如果UserA表中的記錄在UserB中不存在那麼就插入,如果存在就更新,如下圖,在插入更新中我們可以做一些關鍵條件和欄位對映,這裡我們是最簡單的!點選儲存,把我們建立的轉換儲存一下。
建立好轉換之後,我們可以直接執行這個轉換,檢查一下是否有錯,如圖,有錯誤都會在下面的控制檯上輸出。
B:如果我們需要讓這個轉換定時執行怎麼辦呢,那麼我們需要建立一個作業job,見下圖,在簡單表同步這個轉換中,我們把在A步驟中建立的ktl配置上,注意路徑的正確性;
這樣我們在【Start】步驟上面雙擊,如圖:
這樣這個作業就制定好了,點選儲存之後,我們就可以在圖形化介面上點選開始執行了!