基于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数据如下,成功!
在这里插入图片描述

  • 26
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值