我有一个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?
答案 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的一种解决方法。