如何列出BigQuery数据集中未启用主键的表?
列出BigQuery指定数据集中未启用主键的表
你可以通过查询BigQuery的INFORMATION_SCHEMA视图筛选出指定数据集中没有主键约束的表,具体SQL语句如下(记得替换your_project_id和your_dataset_id为实际的项目ID和数据集ID):
SELECT t.table_catalog, t.table_schema, t.table_name FROM `your_project_id.your_dataset_id.INFORMATION_SCHEMA.TABLES` t LEFT JOIN `your_project_id.your_dataset_id.INFORMATION_SCHEMA.TABLE_CONSTRAINTS` tc ON t.table_catalog = tc.table_catalog AND t.table_schema = tc.table_schema AND t.table_name = tc.table_name AND tc.constraint_type = 'PRIMARY KEY' WHERE tc.constraint_name IS NULL AND t.table_type = 'BASE TABLE' -- 仅筛选基础表,排除视图 ORDER BY t.table_name;
说明:
INFORMATION_SCHEMA.TABLES返回数据集中所有表和视图,通过table_type = 'BASE TABLE'限定为实际存储数据的基础表,若需要包含视图,可移除该条件- 左连接
TABLE_CONSTRAINTS视图并指定constraint_type = 'PRIMARY KEY',匹配存在主键约束的表 tc.constraint_name IS NULL会筛选出未匹配到主键约束的表,也就是未启用主键的表
内容的提问来源于stack exchange,提问作者Nick Orlove
相关产品推荐
相关产品推荐

