如何在BigQuery中查询表主键与外键,解决INFORMATION_SCHEMA调用报错
报错原因
这个报错是因为BigQuery的INFORMATION_SCHEMA视图属于特定数据集层级,查询时必须明确指定视图所在的项目、数据集信息,或者提前在请求中设置默认数据集。同时你原SQL里使用了中文全角引号,也会额外触发语法错误。
解决方案
方法1:直接补全INFORMATION_SCHEMA的全限定名(最通用)
在INFORMATION_SCHEMA前拼接你要查询的项目ID、目标数据集名,用反引号包裹全限定名即可,修改后的SQL示例如下:
SELECT K.COLUMN_NAME FROM `{你的项目ID}.{你的目标数据集名}.INFORMATION_SCHEMA.TABLE_CONSTRAINTS` T JOIN `{你的项目ID}.{你的目标数据集名}.INFORMATION_SCHEMA.KEY_COLUMN_USAGE` K ON K.CONSTRAINT_NAME=T.CONSTRAINT_NAME WHERE K.TABLE_NAME='你的表名' AND K.TABLE_SCHEMA='你的数据集名' AND T.CONSTRAINT_TYPE='PRIMARY KEY' LIMIT 1;
如果需要查询外键信息,只需把CONSTRAINT_TYPE的条件值改为'FOREIGN KEY'即可。
注意事项:
- 全限定名必须用反引号`包裹,避免项目ID、数据集名含特殊字符时报错
- 所有过滤条件的引号需要替换为英文半角单引号
'
方法2:提前设置默认数据集
- 如果你在BigQuery控制台执行查询:打开查询编辑器的「查询设置」,指定默认的项目和数据集,设置完成后可以直接运行你原来的SQL语句
- 如果你通过API/SDK执行查询:在请求参数里配置
defaultDataset项,填入对应的项目和数据集信息即可
内容的提问来源于stack exchange,提问作者Younes Osama
相关产品推荐
相关产品推荐

