我想编写一个Postgres函数,以循环方式处理一组表并对它们执行相同的过程。这些表是通过表名进行选择,并以
dmt_
开头。我要在每个表上执行的程序非常简单,只需获取最近几天的记录数。问题是如何获得匹配表名的表。dmt_
开头。我要在每个表上执行的程序非常简单,只需获取最近几天的记录数。问题是如何获得匹配表名的表。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如果你在使用Linux,你也可以将表名的输出传输给grep:
psql -d database_name -c "\d" | grep "some_pattern"
SELECT
relname as table_name, n_live_tup as row_count
FROM
pg_stat_user_tables
ORDER BY
n_live_tup DESC;