在雪花中跨数据库查找具有特定列的表?

sGl*_*low 5 database snowflake-cloud-data-platform

以下资源提供了一个查询,用于在雪花中查找具有特定列名称的表: https: //dataedo.com/kb/query/snowflake/find-tables-with-specific-column-name

然而,当我使用这个查询时,我发现它只搜索一个数据库,而且我不知道如何指定要搜索哪个数据库......

尖端?

Dar*_*ner 12

如果您只是想指定要查询哪个数据库,则可以完全限定对视图的引用,INFORMATION_SCHEMA.TABLES如下所示:

select t.table_schema, 
       t.table_name
from DATABASE_NAME_TO_SEARCH.information_schema.tables t
inner join information_schema.columns c on 
       c.table_schema = t.table_schema and c.table_name = t.table_name
where t.table_type = 'BASE TABLE'
       and column_name ='N_NAME'
order by t.table_schema, 
       t.table_name;
Run Code Online (Sandbox Code Playgroud)

如果您想扫描 Snowflake 帐户内的所有数据库,可以使用以下命令对来完成:

SHOW COLUMNS LIKE 'COLUMN_NAME_HERE' IN ACCOUNT
;
SELECT "database_name" AS TABLE_DB
      ,"schema_name" AS TABLE_SCHEMA
      ,"table_name" AS TABLE_NAME
  FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
 WHERE "kind" = 'COLUMN'
 ORDER BY 1, 2, 3
;
Run Code Online (Sandbox Code Playgroud)