基於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,
From cdc_time_log
(3)學生表輸入配置
先連線資料庫,再在SQL欄中輸入以下語句
SELECT
學號
, 姓名
, 性別
, 年齡
, 年級
, 成績
, 身高
, 手機
, 插入時間
, 更新時間
,Date("${cur_time}") as 匯入時間
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資料如下,成功!