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

时间:2018-06-22 13:17:13

标签: database cdc data-collection streamsets

我有一个MSSQL数据库,其结构是在Postgres数据库上复制的。 我已在MSSQL中启用CDC,并已在StreamSets Data Collector中使用SQL Server CDC客户端来侦听该数据库表中的更改。

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

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

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

这样做,将从tableA_CT,tableB_CT,tableC_CT中读取数据。启用CDC选项时,由MSSQL创建的表。因此,我将在$ {record:attribute('jdbc.tables')}中得到这些表名。

是否可以在与MSSQL相同的表中写入Postgres?

1 个答案:

答案 0 :(得分:0)

您可以通过使用{strong>标题属性表达式为

Expression Evaluator来切断_CT后缀jdbc.tables
${str:isNullOrEmpty(record:attribute('jdbc.tables')) ? '' : 
  str:substring(record:attribute('jdbc.tables'), 0, 
    str:length(record:attribute('jdbc.tables')) - 3)}

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