如何查找包含指定列名的所有事实表?
查找包含指定列名的事实表的方法
不用手动逐个排查,直接查询数据库的系统元数据就能快速定位目标表。以下是主流数据库的具体实现方式,以查找包含Claim_Id列的事实表为例:
MySQL
查询information_schema.columns系统视图,结合事实表的命名规则(比如通常以fact_开头)筛选:
SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name = 'Claim_Id' AND table_schema = '你的数据库名' AND table_name LIKE 'fact_%'; -- 可选,根据实际命名规范调整
SQL Server
通过sys.columns和sys.tables关联查询,同样可添加事实表过滤条件:
SELECT DISTINCT t.name AS table_name FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name = 'Claim_Id' AND t.name LIKE 'fact_%'; -- 可选,按命名规范筛选事实表
PostgreSQL
使用information_schema.columns,结合模式(schema)和事实表规则:
SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name = 'Claim_Id' AND table_schema = 'public' -- 替换为你的目标schema AND table_name LIKE 'fact_%'; -- 可选筛选条件
补充说明
- 如果事实表没有统一命名规范,可以通过表的行数、存储大小辅助判断(事实表通常数据量较大),比如MySQL可查询
information_schema.tables的table_rows字段; - 若需要跨多个数据库/schema查询,只需调整对应的
table_schema参数或添加多schema的筛选条件即可。
内容的提问来源于stack exchange,提问作者user17600203
相关产品推荐
相关产品推荐

