执行一个 Postgres for 循环,从每个 table 中选择数据
Do a Postgres for loop that SELECTs data from each table
我想遍历数据库中的每个 table,并打印它的行数。
我可以获取所有 table 个名称,但我不知道如何遍历它们,将 SELECT COUNT(*)
分配给它的 table。
-- Get all tablenames
SELECT relname
FROM pg_stat_user_tables
示例结果
table_name row_count
------------- -------------
users 321
questions 807
comments 3,145
tags 58
...
注:
我知道您可以使用 pg_stat_user_tables
来获取每个 table 的行数,但我想看到一个 "hello world" Postgres 循环来选择值。我在网上找不到任何其他如此简化的 SO 问题或示例。
我相信您需要为此创建一个 Pl/SQL 过程,如 PostgreSQL 手册中的 documented。
在你的 loop 里面写下这样的东西:
EXECUTE 'SELECT count(*) FROM ' || tabname::regclass;
我想遍历数据库中的每个 table,并打印它的行数。
我可以获取所有 table 个名称,但我不知道如何遍历它们,将 SELECT COUNT(*)
分配给它的 table。
-- Get all tablenames
SELECT relname
FROM pg_stat_user_tables
示例结果
table_name row_count
------------- -------------
users 321
questions 807
comments 3,145
tags 58
...
注:
我知道您可以使用 pg_stat_user_tables
来获取每个 table 的行数,但我想看到一个 "hello world" Postgres 循环来选择值。我在网上找不到任何其他如此简化的 SO 问题或示例。
我相信您需要为此创建一个 Pl/SQL 过程,如 PostgreSQL 手册中的 documented。
在你的 loop 里面写下这样的东西:
EXECUTE 'SELECT count(*) FROM ' || tabname::regclass;