Flink CDC中sqlservercdc如何从某一时刻开始cdc,有大佬写过这个吗?就是比如cdc的开始时间是昨天的8点
Flink CDC中没有直接提供从某一时刻开始CDC的功能。但是,你可以通过以下方式实现类似的效果:
BETWEEN
子句来过滤时间范围:在Flink SQL中使用BETWEEN
子句来指定一个时间范围,只捕获在这个范围内的变更数据。例如,如果你想要捕获昨天8点到当前时间之间的变更数据,可以使用以下语句:SELECT * FROM your_table
WHERE event_time >= '2023-07-04 08:00:00' AND event_time <= NOW();
ALTER TABLE
语句来修改表的起始时间:在源SQL Server数据库中,你可以使用ALTER TABLE
语句来修改表的起始时间。通过将起始时间设置为你想要的时间点,Flink CDC将从该时间点开始捕获表中的变更数据。例如,如果你想要捕获昨天8点开始的变更数据,可以在源SQL Server数据库中使用以下语句:ALTER TABLE your_table SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = your_history_table, DATA_CONSISTENCY_CHECK = ON));
GO
DECLARE @start_lsn binary(16);
SET @start_lsn = sys.fn_cdc_get_min_lsn('your_table');
DBCC CHECKTABLE('your_table', RECORDCOUNT => 0);
DBCC CHECKTABLE('your_table', OBJECTID = OBJECT_ID('your_table'), ROWCOUNT = 0, ERROR = 0);
ALTER TABLE your_table ALTER COLUMN column1 SET NEW_VALUE NVARCHAR(50) NULL; -- Add or modify columns as needed
ALTER TABLE your_table ALTER COLUMN column2 SET NEW_VALUE NVARCHAR(50) NULL; -- Add or modify columns as needed
-- ... repeat for all columns ...
UPDATE your_history_table SET start_lsn = @start_lsn;
请注意,上述方法仅适用于源SQL Server数据库支持更改表的起始时间的情况。如果不支持,你需要使用其他方法来实现类似的效果。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。