You need to enable JavaScript to run this app.
文档中心
云数据库 TiDB 版

云数据库 TiDB 版

复制全文
下载 pdf
通用参考
表过滤规则
复制全文
下载 pdf
表过滤规则
本文介绍表过滤语法规则。​
表过滤语法​
直接使用表名​
每条表过滤规则由“库”和“表”组成,两部分之间以英文句号 . 分隔。表名仅支持由以下标识符组成:​
  • 数字:0 ~ 9​
  • 大小写字母:a ~ z、A ~ Z​
  • 特殊符号:$、_​
  • 非 ASCII 字符:U+0080 ~ U+10FFFF​
其他 ASCII 字符均为保留字,不允许出现在标识符内。​
示例如下:​
​
db1.tbl1​
db2.tbl2​
db3.tbl3​
​
使用通配符​
表名的两个部分均支持使用通配符。​
  • *:匹配零个或多个字符。​
  • ?:匹配一个字符。​
  • [a~z]:匹配 "a" 和 "z" 之间的一个字符。​
  • [!a~z]:匹配不在 "a" 和 "z" 之间的一个字符。​
示例如下:​
​
db[0-9].tbl[0-9a-f][0-9a-f]​
data.*​
*.backup_*​
​
此处,“字符”指的是一个 Unicode 码位,例如:​
  • U+00E9 "é" 是 1 个字符。​
  • U+0065,U+0301 "é" 是 2 个字符。​
  • U+1F64B U+1F3FB U+200D U+2640 U+FE0F "🙋🏻‍♀️" 是 5 个字符。​
排除规则​
在一条过滤规则的开头加上 !,则表示符合这条规则的表不会纳入同步范围。使用排除规则构建屏蔽名单时,必须先添加 *.* 规则,将全部库表纳入同步范围,后续 ! 排除规则才能从全部库表中剔除指定对象。示例如下:​
​
*.*​
!*.Password​
!employees.salaries​
​
转义字符​
如果需要将特殊字符转化为标识符,可以在特殊字符前加上反斜杠 \。示例如下:​
​
db\.with\.dots.*​
​
为了简化语法并向上兼容,不支持下列字符序列:​
  • 在行尾去除空格后使用 \(使用 [ ] 来匹配行尾的空格)。​
  • 在 \ 后使用数字或字母 (0~9、a~z、A~Z)。特别是类似 C 的转义序列,如 \0、\r、\n、\t 等序列,目前在表过滤规则中无意义。​
引号包裹的标识符​
除了 \ 之外,还可以用 " 和 ` 来控制特殊字符。示例如下:​
​
"db.with.dots"."tbl\1"​
`db.with.dots`.`tbl\2`​
​
也可以通过输入两次引号,将引号包含在标识符内。示例如下:​
​
"foo""bar".`foo``bar`​
# 等价于:​
foo\"bar.foo\`bar​
​
用引号包裹的标识符不可以跨越多行。​
用引号只包裹标识符的一部分是无效的。示例如下:​
​
"this is "invalid*.*​
​
正则表达式​
如果您需要使用较复杂的过滤规则,可以将每个匹配模型写为正则表达式,以 / 为分隔符。示例如下:​
​
/^db\d{2,}$/./^tbl\d{2,}$/​
​
这类正则表示使用 Go dialect。只要标识符中有一个子字符串与正则表达式匹配,则视为匹配该模型。例如,/b/ 匹配 db01。​
注意​
正则表达式中的每一个 / 都需要转义为 \/,包括在 [...] 里面的 /。不允许在 \Q...\E 之间放置一个未转义的 /。​
使用多个过滤规则​
当表的名称与过滤列表中所有规则均不匹配时,默认情况下这些表被忽略。​
如果一个表的名称与过滤列表中的多个规则匹配,则以最后匹配的规则为准。例如:​
​
# rule 1​
employees.*​
# rule 2​
!*.dep*​
# rule 3​
*.departments​
​
过滤结果如下:​
​
表名​
规则 1​
规则 2​
规则 3​
结果​
irrelevant.table​
​
​
​
默认(拒绝)​
employees.employees​
✓​
​
​
规则 1(接受)​
employees.dept_emp​
✓​
✓​
​
规则 2(拒绝)​
employees.departments​
✓​
✓​
✓​
规则 3(接受)​
else.departments​
​
✓​
✓​
规则 3(接受)​
​
​
最近更新时间:2026.11.04 16:54:49
这个页面对您有帮助吗?
有用
有用
无用
无用