SqlServerCDC 原始数据获取代码

import com.ververica.cdc.connectors.base.options.StartupOptions;
import com.ververica.cdc.connectors.sqlserver.SqlServerSource;
import com.ververica.cdc.debezium.DebeziumDeserializationSchema;
import com.ververica.cdc.debezium.DebeziumSourceFunction;
import com.ververica.cdc.debezium.JsonDebeziumDeserializationSchema;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
import org.apache.kafka.connect.source.SourceRecord;

public class Test03 {
public static void main(String[] args) {
new Test03().t1();
}

public void t1(){
DebeziumSourceFunction build = SqlServerSource.builder()
.hostname("xx") // SQL Server 主机名
.port(1433) // SQL Server 端口
.database("flinkcdc") // 数据库名称
.tableList("dbo.xx") // 表名称(格式:schema.table)
.username("xx") // 数据库用户名
.password("xx") // 数据库密码
.deserializer(new DebeziumDeserializationSchema(){

@Override
public void deserialize(SourceRecord sourceRecord,Collector collector) throws Exception {
collector.collect(sourceRecord.toString());
}

@Override
public TypeInformation getProducedType() {
return TypeInformation.of(String.class);
}

})
.startupOptions(StartupOptions.latest())
.build();

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);

DataStream streamSource = env
.addSource(build, "SQLServer-source")
.setParallelism(1);
streamSource.print();

try {
env.execute("SQLServer-stream-cdc");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

posted @ 2025-02-01 10:58  自在现实  阅读(93)  评论(0)    收藏  举报