如何在Postgres中获取表名与模式匹配的表列表

9
我想编写一个Postgres函数,以循环方式处理一组表并对它们执行相同的过程。这些表是通过表名进行选择,并以 dmt_ 开头。我要在每个表上执行的程序非常简单,只需获取最近几天的记录数。问题是如何获得匹配表名的表。

请参见 这里 或者 这里 - user330315
3个回答

11
你可以查询 information_schema 来获取此信息。
SELECT table_schema, table_name 
FROM information_schema.tables 
WHERE table_name ~ '^dmt_'`

一旦你有了模式和名称,你可以按需要在plpgsql或其他过程性语言中操纵它们。


我在我的函数中有一个 for tb in SELECT * FROM information_schema.tables WHERE table_name ~ '^dmt_mas' loop,并且在 tb 处出现了错误 loop variable of loop over rows must be a record or row variable or list of scalar variables,尝试使用 like 'dmt%' 仍然会出现相同的错误。 - ddd

0

如果你在使用Linux,你也可以将表名的输出传输给grep:

psql -d database_name -c "\d" | grep "some_pattern"

-1
SELECT
     relname as table_name, n_live_tup as row_count
FROM
    pg_stat_user_tables
ORDER BY
    n_live_tup DESC;

1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接