带有正则表达式的 debezium 表白名单
Posted
技术标签:
【中文标题】带有正则表达式的 debezium 表白名单【英文标题】:debezium table whitelist with regular expression 【发布时间】:2018-12-23 01:05:51 【问题描述】:我有一些带有 bg_ 和 cp_ 前缀的数据库表,例如“bg_table1”、“bg_table2”和“cp_table1”。还有一些其他没有任何前缀的表,例如 my_table1、user_action 等。
我有两个 debezium postgreSQL 连接器,并尝试按照 Debezium - http://debezium.io/docs/connectors/postgresql/#connector-properties 配置 table.whitelist
属性。我的要求如下:
我在连接器配置中使用了类似下面的东西,但不起作用:
第一个连接器配置:
"table.whitelist": "public.bg_*,public.cp_*"
第二个连接器配置:
"table.whitelist": "" Cannot figure out need your help
如果有人能帮我弄清楚,那就太好了。提前致谢!
【问题讨论】:
对于您的第二个连接器,您可以使用table.blacklist
而不是指定白名单。
【参考方案1】:
为您的白名单试试这个:
"table.whitelist": "public\.(bg|cp)_.*"
Demo
并尝试将其用于您的黑名单:
"table.whitelist": "public\.(?!(bg|cp)_)[^_]+_.*"
Demo
第一个模式应该几乎适用于任何正则表达式引擎。第二种模式使用负前瞻。只有当你的正则表达式引擎支持它时它才会起作用。如果没有,那么使用您想要使用的逻辑编写模式将更加困难。
注意:在 Java 代码的上下文中,您可能需要加倍反斜杠来转义点等内容。也就是说,您可能必须使用以下版本,例如
"table.whitelist": "public\\.(bg|cp)_.*"
【讨论】:
嗨蒂姆,注册连接器时显示以下错误:javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: com.fasterxml.jackson.databind.JsonMappingException: Unrecognized character escape ' 。 (代码 46)。任何线索 是的,尝试使用两个反斜杠来转义点,例如\\.
q.v.我更新的答案。以上是关于带有正则表达式的 debezium 表白名单的主要内容,如果未能解决你的问题,请参考以下文章