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

Flink CDC中在用 flink table/sql 的方式同步oracle表可以建多个映射表?

Flink CDC中 在用 flink table/sql 的方式同步oracle表 。 可以建多个映射表,然后再union成一个汇总数据。 同步到 upsert-kafka里吗?

展开
收起
十一0204 2023-07-26 08:04:15 115 0
2 条回答
写回答
取消 提交回答
  • 是的,您可以在 Flink Table/SQL 中使用多个映射表(Mapping Table),然后使用 UNION 或其他相关操作将它们合并成一个汇总数据表。最后,您可以将汇总数据表写入到 Upsert-Kafka 作为输出目标。

    下面是一个示例代码片段,演示了如何在 Flink Table/SQL 中进行多个表的合并和写入到 Upsert-Kafka:

    // 创建两个映射表
    Table table1 = tEnv.from("source_table1");
    Table table2 = tEnv.from("source_table2");
    
    // 合并两个表
    Table unionTable = table1.unionAll(table2);
    
    // 定义 Upsert-Kafka 输出表的 Schema
    final Schema kafkaSchema = ...
    final Properties kafkaProperties = ...
    
    // 将合并的表写入到 Upsert-Kafka
    tEnv.createTemporaryView("merged_table", unionTable);
    tEnv.executeSql("CREATE TABLE kafka_sink (..) WITH (...)");
    tEnv.executeSql("INSERT INTO kafka_sink SELECT * FROM merged_table");
    

    在上述示例中,source_table1source_table2 是源表,通过 unionAll 操作将它们合并成 merged_table。然后,根据需求创建 Upsert-Kafka 输出表,并将 merged_table 插入到 Kafka 作为输出。

    请根据实际情况调整代码中的表名、字段定义和配置选项。

    2023-07-31 23:15:52
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在 Flink CDC 中通过 Flink Table/SQL 的方式同步 Oracle 表时,可以建立多个映射表,以实现多表之间的数据同步。具体的操作步骤如下:
    创建多个映射表,例如:
    sql
    Copy
    CREATE TABLE oracle_source_table1 (
    id INT,
    name STRING,
    ...
    ) WITH (
    'connector' = 'jdbc',
    'url' = 'jdbc:oracle:thin:@//localhost:1521/orcl',
    'table-name' = 'source_table1',
    ...
    );

    CREATE TABLE oracle_source_table2 (
    id INT,
    address STRING,
    ...
    ) WITH (
    'connector' = 'jdbc',
    'url' = 'jdbc:oracle:thin:@//localhost:1521/orcl',
    'table-name' = 'source_table2',
    ...
    );
    其中,oracle_source_table1 和 oracle_source_table2 分别是两个 Oracle 表的映射表。
    在查询语句中使用多个映射表进行数据同步,例如:
    sql
    Copy
    INSERT INTO target_table1
    SELECT id, name, ...
    FROM oracle_source_table1;

    INSERT INTO target_table2
    SELECT id, address, ...
    FROM oracle_source_table2;
    其中,target_table1 和 target_table2 分别是需要同步数据的目标表,可以通过多个 INSERT INTO 子句将不同的映射表的数据同步到不同的目标表。

    2023-07-29 16:33:15
    赞同 展开评论 打赏

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

相关产品

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

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