基于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, “
curt?ime”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 學號<=
curn?o")as當前學號FROMstudentc?dc1where學號>?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資料如下,成功!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/184969.html
標籤:其他
上一篇:MySQL性能調優【一】
