查询以获取雪花中数据库中所有表的行数

Posted

技术标签:

【中文标题】查询以获取雪花中数据库中所有表的行数【英文标题】:Query to get the row counts of all the tables in a database in Snowflake 【发布时间】:2020-03-22 08:11:21 【问题描述】:

获取雪花数据库中所有表的行数的查询是什么。

【问题讨论】:

【参考方案1】:

请使用以下查询:

SELECT t.table_schema || '.' ||  t.table_name as "table_name",t.row_count
FROM information_schema.tables t
WHERE t.table_type = 'BASE TABLE'
ORDER BY t.row_count

【讨论】:

你能解释一下你的查询吗【参考方案2】:

我会采用不同的方法并使用 ACCOUNT_USAGE 共享中的 TABLES 视图。可能会有一些延迟,但对于较大的 Snowflake 帐户,我一直利用 ACCOUNT_USAGE 共享来处理此类事情。

以下内容为您提供记录数、表名“列表”以及给定数据库和架构的表数,您可以调整查询以满足您的需求。

SELECT SUM(row_count) total_row_count, listagg(table_name, ' ') tab_list, count(*) num_tabs
FROM   snowflake.account_usage.tables
WHERE  table_catalog = 'DB NAME HERE'
AND    table_schema = 'SCHEMA NAME HERE'
AND    table_type = 'BASE TABLE'
AND    deleted IS NULL;

https://docs.snowflake.net/manuals/sql-reference/account-usage/tables.html

我希望这会有所帮助...Rich Murnane

【讨论】:

正如 Rich 所说,这有一些延迟,但最大的好处是您可以根据需要同时查询所有数据库和模式,而 information_schema 仅限于单个数据库(并且仅包括您有权访问的表格)。【参考方案3】:
select TABLE_CATALOG||'.'||TABLE_SCHEMA||'.'||TABLE_NAME FQN,ROW_COUNT from YOURDATABASE.information_schema.tables where table_type = 'BASE TABLE';

+------------------------------------------------+-----------+
| FQN                                            | ROW_COUNT |
|------------------------------------------------+-----------|
| YOURDATABASE.PUBLIC.FOO1                       |   7108958 |
| YOURDATABASE.PUBLIC.FOO2                       |    444847 |
| YOURDATABASE.PUBLIC.FOO3                       |   2048267 |
| YOURDATABASE.PUBLIC.FOO4                       |       212 |
+------------------------------------------------+-----------+

【讨论】:

【参考方案4】:

我使用这个最简单的查询得到了结果:

use your_db_name.information_schema;
select * from tables where table_schema ='Your_schema_name';

查询愉快:)

【讨论】:

以上是关于查询以获取雪花中数据库中所有表的行数的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 SQL SERVER 数据库中所有表的行数 [重复]

如何用SQL语句求oracle 数据库所有表的行数?

Netezza 中数据库中所有表的行数

mysql获取表中数据行数

MS SQL 如何查看一个数据库中所有表的行数

oracle查看所有表及各表行数