1.準備工作
2.基於時間戳的源資料的CDC案例
3.基於自增序列的源資料的CDC案例
4.基於觸發器的CDC案例
一、建立student_cdc.csv表
包括學號,性別,年齡,年級,成績,身高,手機,插入時間,更新時間。
二、將csv錶轉換成cdc表
1.轉換的設計圖
CSV檔案輸入到表輸出
2.設定CSV檔案輸入
3.設定表輸出檔案
新建連線
連線名稱con;連線型別 MySQL ;主機名稱:localhost;資料庫名稱:studb;
然後是使用者名稱和密碼
點選測試
連線成功,然後點選確定。
目標表 student_cdc1,然後執行sql語句
4.然後儲存,啟動命令。然後在navicat中可以看到資料。
二.基於時間戳的源資料的CDC案例
1.建立cdc_time_log表,並新增資料。
2.轉換的設計圖
新建轉換檔案,並開始視覺化程式設計
查詢條件:{插入時間>上次執行時間 and 插入時間<=當前執行時間} or {更新時間>上次執行時間 and 更新時間<=當前執行時間}
3.步驟的設定
(1)命名引數設定 右鍵單擊空白處,選擇轉換設定CTL_L,找到命名引數
命名引數:cur_time 預設值:2018-08-04
(2)CDC紀錄檔表輸入設定
新建連線(同理),在SQL欄中輸入以下語句
Select 上次執行時間 as last1,
「
c
u
r
t
i
m
e
」
a
s
c
u
r
1
,
上
次
執
行
時
間
a
s
l
a
s
t
2
,
「
{cur_time}」 as cur1, 上次執行時間 as last2, 「
curtime」ascur1,上次執行時間aslast2,「{cur_time}」 as cur2,
From cdc_time_log
(3)學生表輸入設定
先連線資料庫,再在SQL欄中輸入以下語句
SELECT
學號
, 姓名
, 性別
, 年齡
, 年級
, 成績
, 身高
, 手機
, 插入時間
, 更新時間
,Date("${cur_time}") as 匯入時間
FROM student_cdc1
where (插入時間>? and 插入時間<=?) or (更新時間>? and 更新時間<=?)
然後從步驟插入資料中選擇:CDC紀錄檔表輸入
(4)Excel輸出設定
選擇輸出路徑
然後再在「內容」索引標籤中勾選「追加」。
(5)插入\更新設定
4.執行轉換
值設為2018-08-06
然後資料如下:
三、基於自增序列的源資料的CDC案例
1.建立cdc_seq_log表,並插入資料
2.轉換的設計圖
3.步驟設定
(1).命名引數的設定
命名引數:cur_no ;預設值:1
(2).CDC紀錄檔檔案輸入
連線資料庫,在SQL欄中輸入以下語句
SELECT
上次執行序列
FROM cdc_seq_log
(3)學生表輸入設定
連線資料庫,在SQL欄中輸入以下語句,並在步驟插入資料中選擇:CDC紀錄檔表輸入
SELECT
學號
, 姓名
, 性別
, 年齡
, 年級
, 成績
, 身高
, 手機
, 插入時間
, 更新時間
,Curdate() as 匯入時間
,Date("
c
u
r
n
o
"
)
a
s
當
前
學
號
F
R
O
M
s
t
u
d
e
n
t
c
d
c
1
w
h
e
r
e
學
號
>
?
a
n
d
學
號
<
=
{cur_no}") as 當前學號 FROM student_cdc1 where 學號>? and 學號<=
curno")as當前學號FROMstudentcdc1where學號>?and學號<={cur_no}
(4)學生表Excel輸出
選擇輸出路徑,內容索引標籤勾選追加
(6)插入\更新設定
4.執行轉換
值設定為2,然後儲存執行,輸出資料。成功!
四、基於觸發器的CDC案例
1.基於INSERT觸發器的CDC案例
(1)建立cdc_opt_log表,操作為」I」,處理標誌為」未處理」,為student_cdc1建立觸發器,在student_cdc1中插入一條資料後,將運算元據記入cdc_opt_log中。
(2)轉換設計圖
(3)引數設定
(i)CDC紀錄檔表輸入設定
在SQL欄中輸入以下語句
SELECT
學號
FROM cdc_opt_log
where 操作=「I」 and 處理標誌=「未處理」
(ii)學生表輸入設定
在SQL欄中輸入以下語句
SELECT
學號
, 姓名
, 性別
, 年齡
, 年級
, 成績
, 身高
, 手機
, 插入時間
, 更新時間
,curdate() as 匯入時間
,「已處理」 as 處理標誌
FROM student_cdc1
where 學號=?
(iii)插入學生同步表
目標表設定為student_cdc_sync,然後按圖設定,然後執行SQL語句建立目標表
(iv)更新CDC紀錄檔表
最後執行轉換,結果輸出到目標表student_cdc_sync
2.基於UPDATE觸發器的CDC案例
(1)建立觸發器student_cdc_update,在student_cdc1中插入一條資料後,將運算元據記入cdc_opt_log中。
(3)轉換設計圖
(4)引數設定
(i)CDC檔案設定
在SQL欄中輸入以下語句
SELECT
學號
FROM cdc_opt_log
where 操作=「U」 and 處理標誌=「未處理」
(ii)學生表輸入設定
在SQL欄中輸入以下語句
SELECT
學號
, 姓名
, 性別
, 年齡
, 年級
, 成績
, 身高
, 手機
, 插入時間
, 更新時間
,curdate() as 匯入時間
,「已處理」 as 處理標誌
FROM student_cdc1
where 學號=?
從步驟插入資料選擇:CDC紀錄檔表輸入
(iii)更新學生同步表設定
目標表為student_cdc_sync
(iv)更新CDC紀錄檔表設定
目標表是cdc_opt_log
最後執行轉換,
處理標誌變為已處理
資料輸出到student_cdc_sync表中
3.基於DELETE觸發器的CDC案例
(1)建立觸發器student_cdc_delete,在student_cdc1中插入一條資料後,將運算元據記入cdc_opt_log中。
Cdc_opt_log中的資料
(2)轉換設計圖
(3)步驟設定
(i)CDC紀錄檔表輸入
在sql欄中輸入以下語句
SELECT
學號
, 「已處理」 as 處理標誌
FROM cdc_opt_log
where 操作=「D」 and 處理標誌=「未處理」
(ii)刪除學生同步表
(iii)更新CDC紀錄檔表
(4)執行轉換
cdc_opt_log資料如下,成功!