1. 程式人生 > 實用技巧 >基於CDC變更資料的匯入與匯出

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

基於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資料如下,成功!
在這裡插入圖片描述