在哪里可以找到postgresql文件夹中创建的临时表?如果我select * from temp_table;
然后我得到了结果,但是看不到我的数据库到PgAdmin的结构?
答案 0 :(得分:7)
临时表被放入名为“pg_temp_NNN”的模式中,其中“NNN”表示您连接到哪个服务器后端。这会隐式添加到创建它们的会话中的搜索路径中。
请注意,您无法通过另一个连接访问一个连接的临时表...因此,根据pgAdmin如何组织其连接,即使能够在对象资源管理器中找到这些表,也可能没用。
答案 1 :(得分:1)
以下是获取会话的pg_temp_ nnn 架构名称的一种方法:
select distinct 'pg_temp_'||sess_id from pg_stat_activity where procpid = pg_backend_pid()
这将标识正在运行该SQL语句本身的会话,并返回它正在运行的会话ID。
然后,您可以使用它来列出所有临时表:
select *
from information_schema.tables
where table_schema =
( select distinct 'pg_temp_'||sess_id
from pg_stat_activity
where procpid = pg_backend_pid()
)
或者获取表格结构:
select *
from information_schema.columns
where table_schema =
( select distinct 'pg_temp_'||sess_id
from pg_stat_activity
where procpid = pg_backend_pid()
)
and table_name = 'my_temp_table'
order by ordinal_position