基於CDC變更資料的匯入與匯出

2020-10-20 11:00:44

基於CDC變更資料的匯入與匯出

文章目錄

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, 「 curtimeascur1,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")asFROMstudentcdc1where>?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資料如下,成功!
在這裡插入圖片描述