Streamsets Data Collector CDC 可以读取和写入多个表吗?

Can Streamsets Data Collector CDC read from and write to multiple tables?

我有一个 MSSQL 数据库,其结构是通过 Postgres 数据库复制的。 我在 MSSQL 中启用了 CDC,并且在 StreamSets 数据收集器中使用了 SQL 服务器 CDC 客户端来侦听该数据库的 tables.

中的变化

但我找不到在 Postgres 中写入相同 table 的方法。

例如我在 MSSQL 中有 3 个 table: tableA,tableB,tableC。与我在 Postgres 中的 tables 相同。 我将数据插入 tableA 和 tableC。我希望通过 Postgres 复制这些更改。

在 StreamSets DC 中,为了写入 Postgres,我正在使用 JDBC Producer 并在 Table 名称字段中指定:${record:attributes('jdbc.tables')}.

这样做,将从tableA_CT、tableB_CT、tableC_CT读取数据。当您启用 CDC 选项时,Tables 由 MSSQL 创建。所以我最终会在 ${record:attribute('jdbc.tables')}.

中得到那些 table 个名字

有没有办法在与 MSSQL 相同的 table 秒内写入 Postgres?

您可以使用带有 Header 属性表达式 Expression Evaluator 来删除 jdbc.tables 属性的 _CT 后缀的:

${str:isNullOrEmpty(record:attribute('jdbc.tables')) ? '' : 
  str:substring(record:attribute('jdbc.tables'), 0, 
    str:length(record:attribute('jdbc.tables')) - 3)}

注意 - str:isNullOrEmpty 测试是 SDC-9269 的解决方法。