如何从雪花中的数据库模式中检索所有表名

Posted

技术标签:

【中文标题】如何从雪花中的数据库模式中检索所有表名【英文标题】:How to retrieve all the table names from a DB schema in snowflake 【发布时间】:2020-09-15 13:21:39 【问题描述】:

我正在尝试以特定模式检索数据库中表的所有名称,但这仅适用于信息模式并为其他模式返回 null。这是我的尝试:

CREATE PROCEDURE tablename(DB VARCHAR,SC VARCHAR)
RETURNS array
LANGUAGE javascript
AS
$$
    var t = [];
    var stmt = snowflake.createStatement(
    sqlText: "SELECT table_name FROM "+ DB +".information_schema.TABLES where TABLE_TYPE='BASE_TABLE';");
    var e = stmt.execute();
    
    while(e.next())
    
       var x = r.getColumnValue('table_name');
       t.push(x);
    
return t;
$$;

【问题讨论】:

【参考方案1】:

information_schema.TABLES 仅显示会话的当前角色已被授予访问权限的对象。

也许您缺少一些特权,这就是为什么您看不到其他表,而只能看到 information_schema 中的表?

检查您是否可以使用 SHOW GRANTS。

更多信息:https://docs.snowflake.com/en/sql-reference/info-schema/tables.html 和https://docs.snowflake.com/en/sql-reference/sql/show-grants.html

亲切的问候:-)

【讨论】:

我不仅在信息模式中寻找表。我也想要其他模式中的表,但是如何从这些模式中检索表名 information_schema.TABLES 向您显示您帐户中所有数据库/模式中的所有表(除非您有足够的权限并且这些表没有被删除)。您有两列 TABLE_CATALOG(用于数据库)和 TABLE_SCHEMA(用于模式)进行过滤。当您在查询中正确使用它们时,我的假设是您使用了错误的角色(它对您希望作为查询结果查看的表没有权限)

以上是关于如何从雪花中的数据库模式中检索所有表名的主要内容,如果未能解决你的问题,请参考以下文章

如何从数据库中获取所有表名?

如何从特定数据库中检索具有行数的表名?

改进 ODBC 和 JDBC API 中的雪花元数据调用

在雪花中检索帐户的所有可用屏蔽策略

用于检索给定模式的所有表名的 DB2 查询

查询雪花模式中的所有表