SHOW TABLES¶
列出您拥有访问权限的表,包括因仍在 Time Travel 保留期内而可以取消删除的已删除表。该命令可用于列出当前/指定数据库或架构的表,或整个账户的表。
输出返回表元数据和属性,按数据库、架构和表名称按字典顺序排序(有关输出列的说明,请参阅本主题中的 输出)。如果您要使用提供的筛选器筛选结果,请务必注意这一点。
- 另请参阅:
CREATE TABLE、DROP TABLE、UNDROP TABLE、ALTER TABLE、DESCRIBE TABLE
TABLES 视图 (Information Schema)
语法¶
SHOW [ TERSE ] TABLES [ HISTORY ] [ LIKE '<pattern>' ]
[ IN
{
ACCOUNT |
DATABASE |
DATABASE <database_name> |
SCHEMA |
SCHEMA <schema_name> |
<schema_name>
}
]
[ STARTS WITH '<name_string>' ]
[ LIMIT <rows> [ FROM '<name_string>' ] ]
参数¶
TERSE
(可选)仅返回输出列的子集:
created_on
name
kind
kind
列值始终为 TABLE。database_name
schema_name
默认:无值(所有列都包含在输出中)
HISTORY
(可选)包括尚未清除(即它们仍在各自的 Time Travel 保留期内)的已删除表。如果删除的表存在多个版本,则输出会为每个版本显示一行。输出还包括其他
dropped_on
列,其中显示:日期和时间戳(适用于已删除表)。
NULL
(适用于活动表)。
默认:无值(删除的表 不 包含在输出中)
LIKE 'pattern'
(可选)按对象名称筛选命令输出。筛选器使用 不区分大小写 的模式匹配,并支持 SQL 通配符(
%
和_
)。例如,以下模式返回 相同的 结果:
... LIKE '%testing%' ...
... LIKE '%TESTING%' ...
. 默认:无值(不对输出应用筛选)。
[ IN ... ]
(可选)指定命令的作用域。指定以下任一项:
ACCOUNT
返回整个账户的记录。
DATABASE
、.DATABASE db_name
返回当前正在使用的数据库或指定数据库 (
db_name
) 的记录。如果指定
DATABASE
而不指定db_name
,并且没有使用任何数据库,则关键字对输出没有影响。SCHEMA
、.SCHEMA schema_name
、.schema_name
返回当前正在使用的架构或指定架构 (
schema_name
) 的记录。如果数据库正在使用中,或者指定了完全限定
schema_name`(例如 ``db.schema`
),则SCHEMA
是可选选项。如果未使用任何数据库,则指定
SCHEMA
对输出没有影响。
默认:取决于会话当前是否正在使用数据库:
数据库:
DATABASE
是默认值(即该命令返回您有权在数据库中查看的对象)。无数据库:
ACCOUNT
是默认值(即该命令返回您有权在账户中查看的对象)。
STARTS WITH 'name_string'
(可选)根据对象名称开头显示的字符筛选命令输出。该字符串必须放在单引号内并且 区分大小写。
例如,以下字符串会返回 不同的 结果:
... STARTS WITH 'B' ...
... STARTS WITH 'b' ...
. 默认:无值(不对输出应用筛选)
LIMIT rows [ FROM 'name_string' ]
(可选)限制返回的最大行数,同时还对结果启用“分页”功能。实际返回的行数可能小于指定的限制。例如,现有对象的数量小于指定的限制。
可选的
FROM 'name_string'
分子句实际上会充当结果的“游标”。这样就可以提取对象名称与指定字符串匹配的第一行之后的指定行数:该字符串必须放在单引号内并且 区分大小写。
该字符串不必包含完整的对象名称;支持部分名称。
默认:无值(不对输出应用限制)
备注
对于支持
FROM 'name_string'
和STARTS WITH 'name_string'
子句的 SHOW 命令,您可以将这两个子句组合在同一语句中。但是,两个条件都必须满足,否则它们相互抵消,不返回任何结果。此外,对象按名称的字典顺序返回,因此
FROM 'name_string'
仅返回字典值高于STARTS WITH 'name_string'
所返回行的行。例如:
... STARTS WITH 'A' LIMIT ... FROM 'B'
不会返回任何结果。... STARTS WITH 'B' LIMIT ... FROM 'A'
不会返回任何结果。... STARTS WITH 'A' LIMIT ... FROM 'AB'
将返回结果(如果有任何行与输入字符串匹配)。
使用说明¶
如果一个账户(或数据库或架构)有大量表,则搜索整个账户(或表或架构)可能会消耗大量的计算资源。
在输出中,结果按数据库名称、架构名称和表名排序。这意味着数据库的结果可以包含来自多个架构的表,并且可能会中断分页。为了使分页按预期工作,必须针对单个架构执行该 SHOW TABLES 命令。您可以使用该 SHOW TABLES 命令的 IN SCHEMA
schema_name
参数。或者,您可以通过在执行 SHOW TABLES 命令之前执行 USE SCHEMA 命令,在当前上下文中使用架构。
该命令不需要正在运行的仓库即可执行。
LIMIT rows
的值不能超过10000
。如果省略LIMIT rows
,若结果集大于 1 万行,则该命令将导致错误。要查看存在超过 1 万条记录的结果,请在 Snowflake Information Schema 中包含
LIMIT rows
或查询相应的视图。
若要对此命令的输出进行后处理,可以使用 RESULT_SCAN 函数,该函数会将输出视为可查询的表。
输出¶
命令输出在以下列中提供表属性和元数据:
列 |
描述 |
---|---|
created_on |
创建表的日期和时间。 |
name |
表的名称。 |
database_name |
存储表的数据库。 |
schema_name |
存储表的架构。 |
kind |
表类型:TABLE(适用于永久表)、TEMPORARY 或 TRANSIENT。 |
comment |
为表添加注释。 |
cluster_by |
列定义为表的群集密钥。 |
rows |
表中的行数。返回外部表的 NULL。 |
bytes |
在查询中扫描整个表时将要扫描的字节数。请注意,此数字可能与表的实际物理字节数(即存储在磁盘上的字节数)不同。 |
owner |
拥有表的角色。 |
retention_time |
Time Travel 修改和删除数据的保留天数。 |
dropped_on |
删除表的日期和时间;若表处于活动状态,则为 NULL。仅当为命令指定 HISTORY 关键字时,才会显示此列。 |
automatic_clustering |
如果为账户启用 自动聚类,请指定该表是显式启用 ( |
change_tracking |
若为 |
search_optimization |
若为 |
search_optimization_progress |
已针对搜索进行了优化的表百分比。当首次将优化添加到表中以及对搜索优化服务进行维护时,此值会增加。在衡量新优化表上的搜索优化的性能改善之前,请等待,直至其表明该表已完全优化。 |
search_optimization_bytes |
搜索优化服务为此表使用的额外存储字节数。 |
is_external |
如果是外部表,则为 |
enable_schema_evolution |
如果该表启用 架构演进,则为 |
owner_role_type |
拥有对象的角色类型是 |
is_event |
如果是事件表,则为 |
budget |
预算 名称(如果对象受预算监控)。否则为 NULL。 |
is_hybrid |
如果是混合表,则为 |
is_iceberg |
如果该表是 Iceberg 表,显示 |
is_immutable |
如果表使用 READ ONLY 属性创建,则显示 |
有关可以为表指定的属性的更多信息,请参阅 CREATE TABLE。
备注
对于克隆表和包含已删除数据的表,为该表显示的 bytes
可能与表的物理字节数不同:
在向表中添加新行或修改或删除表中的现有行之前,克隆表不会使用额外的数据存储。如果对表进行很少更改或没有更改,则显示的字节数将 大于 为该表存储的实际物理字节数。
从表中删除的数据将保留在 Snowflake 中,直到数据的 Time Travel 保留期(默认为 1 天)和故障安全期(7 天)结束为止。在这两个时段内,显示的字节数 小 于为该表存储的实际物理字节数。
有关与克隆、Time Travel 和故障安全相关的表大小(以字节为单位)的更多详细信息,请参阅 TABLE_STORAGE_METRICS Information Schema 视图。
示例¶
这些示例显示了您有权根据指定参数查看的所有表。
在 样本数据集 中对表运行 SHOW TABLES。这些示例使用 TERSE 参数来限制输出。
显示
tpch_sf1
架构中名称以LINE
开头的所有表:SHOW TERSE TABLES IN tpch_sf1 STARTS WITH 'LINE';+-------------------------------+----------+-------+-----------------------+-------------+ | created_on | name | kind | database_name | schema_name | |-------------------------------+----------+-------+-----------------------+-------------| | 2016-07-08 13:41:59.960 -0700 | LINEITEM | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1 | +-------------------------------+----------+-------+-----------------------+-------------+显示
tpch_sf1
架构中名称包含PART
子字符串的所有表:SHOW TERSE TABLES LIKE '%PART%' IN tpch_sf1;+-------------------------------+-----------+-------+-----------------------+-------------+ | created_on | name | kind | database_name | schema_name | |-------------------------------+-----------+-------+-----------------------+-------------| | 2016-07-08 13:41:59.960 -0700 | JPART | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1 | | 2016-07-08 13:41:59.960 -0700 | JPARTSUPP | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1 | | 2016-07-08 13:41:59.960 -0700 | PART | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1 | | 2016-07-08 13:41:59.960 -0700 | PARTSUPP | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1 | +-------------------------------+-----------+-------+-----------------------+-------------+显示
tpch_sf1
架构中的表,但将输出限制为三行,且从以J
开头的表名开始:SHOW TERSE TABLES IN tpch_sf1 LIMIT 3 FROM 'J';+-------------------------------+-----------+-------+-----------------------+-------------+ | created_on | name | kind | database_name | schema_name | |-------------------------------+-----------+-------+-----------------------+-------------| | 2016-07-08 13:41:59.960 -0700 | JCUSTOMER | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1 | | 2016-07-08 13:41:59.960 -0700 | JLINEITEM | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1 | | 2016-07-08 13:41:59.960 -0700 | JNATION | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1 | +-------------------------------+-----------+-------+-----------------------+-------------+
使用 HISTORY 参数显示已删除的表。
在当前架构中创建一个表,然后将其删除:
CREATE OR REPLACE TABLE test_show_tables_history(c1 NUMBER); DROP TABLE test_show_tables_history;使用 HISTORY 参数将删除的表包含在命令输出中:
SHOW TABLES HISTORY LIKE 'test_show_tables_history';在输出中,
dropped_on
列显示删除表的日期和时间。