我正在为我的 Postgres 8.4 数据库使用 pgAdmin,我想知道在哪里(任何表/模式/等?)我可以找到当前使用的临时表的列表?我认为必须有一个地方可以找到它。
它们既不存在于目录对象表中,也不存在于视图中,还有其他建议吗?
我正在为我的 Postgres 8.4 数据库使用 pgAdmin,我想知道在哪里(任何表/模式/等?)我可以找到当前使用的临时表的列表?我认为必须有一个地方可以找到它。
它们既不存在于目录对象表中,也不存在于视图中,还有其他建议吗?
Postgres 为名为“pg_temp_#”的临时表创建了一个临时模式,您可以使用 psql...
create temp table mytemptable(name varchar);
select c.relname
from pg_namespace n
join pg_class c on n.oid=c.relnamespace
where n.nspname='pg_temp_1';
您可以列出在 psql 中执行“\dn”的模式。
希望有帮助。
临时表存在于pg_temp_{№}
默认隐藏在 pgAdmin UI 中的临时模式中。
在 pgAdmin(至少 pgAdmin4)中,您可以打开首选项窗格并打开此设置:
Display->Show system objects?
至True
这将显示您创建的临时表的隐藏模式。
PS 更改首选项后刷新架构树
SELECT
n.nspname as SchemaName
,c.relname as RelationName
,CASE c.relkind
WHEN 'r' THEN 'table'
WHEN 'v' THEN 'view'
WHEN 'i' THEN 'index'
WHEN 'S' THEN 'sequence'
WHEN 's' THEN 'special'
END as RelationType
,pg_catalog.pg_get_userbyid(c.relowner) as RelationOwner
,pg_size_pretty(pg_relation_size(n.nspname ||'.'|| c.relname)) as RelationSize
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n
ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','s')
AND (n.nspname !~ '^pg_toast' and nspname like 'pg_temp%')
ORDER BY pg_relation_size(n.nspname ||'.'|| c.relname) DESC
将显示所有临时表的输出。
schemaname | relationname | relationtype | relationowner | relationsize
------------+--------------+--------------+---------------+--------------
pg_temp_63 | temp_sl_4 | table | power_bi_cr | 2355 MB
pg_temp_63 | temp_sl_3 | table | power_bi_cr | 1342 MB
pg_temp_63 | temp_sl_2 | table | power_bi_cr | 1239 MB
pg_temp_63 | temp_sl | table | power_bi_cr | 1216 MB
pg_temp_63 | temp_sl_gr | table | power_bi_cr | 521 MB
pg_temp_63 | temp_ftlo | table | power_bi_cr | 457 MB
pg_temp_63 | temp_th3 | table | power_bi_cr | 123 MB
pg_temp_63 | temp_th | table | power_bi_cr | 79 MB
pg_temp_63 | temp_th2 | table | power_bi_cr | 17 MB
(9 rows)