执行一个 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;