开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC中sqlservercdc如何从某一时刻开始cdc,有写过这个吗?

Flink CDC中sqlservercdc如何从某一时刻开始cdc,有大佬写过这个吗?就是比如cdc的开始时间是昨天的8点

展开
收起
真的很搞笑 2023-12-19 08:08:06 24 0
1 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Flink CDC中没有直接提供从某一时刻开始CDC的功能。但是,你可以通过以下方式实现类似的效果:

    1. 使用BETWEEN子句来过滤时间范围:在Flink SQL中使用BETWEEN子句来指定一个时间范围,只捕获在这个范围内的变更数据。例如,如果你想要捕获昨天8点到当前时间之间的变更数据,可以使用以下语句:
    SELECT * FROM your_table
    WHERE event_time >= '2023-07-04 08:00:00' AND event_time <= NOW();
    
    1. 使用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数据库支持更改表的起始时间的情况。如果不支持,你需要使用其他方法来实现类似的效果。

    2023-12-19 14:43:14
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载