如何使用SchemaCrawler实现多模式数据库表过滤?
一次性过滤多模式数据库表的解决方案
没问题!你完全可以一次性过滤掉所有包含AUDIT、enum或SYSTEM的表,核心是用对正则表达式的“或”逻辑,再搭配反向匹配参数来实现。
正确的命令写法
你之前的正则思路是对的,但可能缺了关键的反向匹配参数,或者需要调整正则的精准度。试试这个命令:
-grepcolumns=.*(AUDIT|_enum_|SYSTEM).* --invert-match
关键参数解析
.*(AUDIT|_enum_|SYSTEM).*:这个正则会匹配任何包含以下内容的表名:- 完整的
AUDIT字符串 - 包含
_enum_的片段(贴合你例子里的bar_enum_baz,避免误匹配带enum前缀/后缀的其他词,如果不需要这么精准,也可以改成enum) - 完整的
SYSTEM字符串
- 完整的
--invert-match:这是实现“隐藏目标表”的核心——它会反转匹配结果,把符合正则的表(也就是你要过滤掉的)排除,只保留不匹配的表。
注意事项
- 如果工具解析正则时出现问题,把正则用引号括起来试试:
-grepcolumns=".*(AUDIT|_enum_|SYSTEM).*" --invert-match - 确认参数是否对应表名过滤:如果
-grepcolumns是用来过滤列的,那你可能需要换成对应表名的参数(比如部分工具里是-greptables),具体要看你使用工具的文档。
这样就能一次性搞定三种模式的过滤,不用分多次操作啦!
内容的提问来源于stack exchange,提问作者Jon Lauridsen
相关产品推荐
相关产品推荐

