如何从雪花中的数据库模式中检索所有表名
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(用于模式)进行过滤。当您在查询中正确使用它们时,我的假设是您使用了错误的角色(它对您希望作为查询结果查看的表没有权限)以上是关于如何从雪花中的数据库模式中检索所有表名的主要内容,如果未能解决你的问题,请参考以下文章