Debezium系列之:重新选择列
一、介绍
- 仅 SQL 数据库连接器支持此后处理器。
- 在某些情况下,由于某些源数据库的工作方式,当 Debezium 连接器发出更改事件时,该事件可能会排除特定列类型的值。例如,PostgreSQL 中的 TOAST 列、Oracle 中的 LOB 列或 Oracle Exadata 中的扩展字符串列的值可能全部被排除。
- ReselectColumnsPostProcessor 提供了一种从数据库表中重新选择一个或多个列并获取当前状态的方法。您可以配置后处理器以重新选择以下列类型:
- 空列。
- 包含 unavailable.value.placeholder 标记值的列。
配置后处理器类似于配置自定义转换器或转换。
二、配置案例
配置 PostProcessor 的方式与配置 CustomConverter 或 Transformer 的方式大致相同。要使连接器能够使用 ReselectColumnsPostProcessor,请将以下选项添加到连接器配置中:
"post-processors": "reselector", 1"reselector.type": "io.debezium.processors.reselect.ReselectColumnsPostProcessor", 2"reselector.reselect.columns.include.list": "<schema_name>.<table_name>:<colA>,<schema_name>.<table_name>:<colB>", 3"reselector.reselect.unavailable.values": "true", 4"reselector.reselect.null.values": "true" 5
- 以逗号分隔的后处理器前缀列表。
- 后处理器的完全限定类类型名称。
- 使用以下格式指定的以逗号分隔的列名称列表:.:。
- 启用或禁用重新选择包含 unavailable.value.placeholder 标记值的列。
- 启用或禁用重新选择空列。
三、配置选项
下表列出了您可以为重新选择列后处理器设置的配置选项。
表 1. 重新选择列后处理器配置选项
属性 | 默认值 | 描述 |
---|---|---|
reselect.columns.include.list | No default | 要从源数据库中重新选择的以逗号分隔的列名称列表。使用以下格式指定列名称: + .:__如果设置了 reselect.columns.exclude.list 属性,请勿设置此属性。 |
reselect.columns.exclude.list | No default | 源数据库中要从重新选择中排除的列名称的逗号分隔列表。使用以下格式指定列名称: + .:__如果设置了 reselect.columns.include.list 属性,请勿设置此属性。 |
reselect.unavailable.values | true | 指定如果列值由连接器的 unavailable.value.placeholder 属性提供,则后处理器是否重新选择与 reselect.columns.include.list 过滤器匹配的列。 |
reselect.null.values | true | 指定如果列值为空,后处理器是否重新选择与 reselect.columns.include.list 过滤器匹配的列。 |