Kafka JDBC Connect能否按记录名加载至不同数据表?配置疑问确认
Kafka JDBC Connect 按记录名写入对应表的方案
需求支持性:Kafka JDBC Connect 支持按记录名(schema中的record name)将数据写入对应数据表,但需要通过**单消息转换(SMTs)**来实现,并非原生直接提供该能力。具体配置思路:
- 使用
InsertFieldSMT将消息value的schema名称(即你的记录名)插入到消息的一个字段中,示例配置:transforms=addRecordName transforms.addRecordName.type=org.apache.kafka.connect.transforms.InsertField$Value transforms.addRecordName.schema.name.field=__record_name - 配置JDBC Sink的
table.name.format参数为${__record_name},这样连接器就会根据插入的字段值动态匹配目标数据表(比如SALES_ORDER记录就写入同名表)
- 使用
关于“仅支持按主题指定表名,而非按schema”的表述:这个说法不准确。JDBC Connect默认确实支持按主题映射表名(比如
table.name.format=${topic}),但通过结合SMT和配置占位符,它完全可以基于消息的schema信息(包括record name)、甚至消息内容里的字段来动态指定目标表名,并非只能绑定主题。
内容的提问来源于stack exchange,提问作者Werner Daehn
相关产品推荐
相关产品推荐

