Где создается временная таблица? - PullRequest
5 голосов
/ 14 июня 2010

Где я могу найти созданную временную таблицу в папках posgresql?Если я делаю select * from temp_table;, тогда я получаю результат, но не вижу его структуры моей базы данных в PgAdmin?

Ответы [ 2 ]

7 голосов
/ 14 июня 2010

Временные таблицы помещаются в схему с именем "pg_temp_NNN", где "NNN" указывает, к какому серверному бэкэнду вы подключены. Это неявно добавляется к вашему пути поиска в сеансе, который их создает.

Обратите внимание, что вы не можете получить доступ к временным таблицам одного соединения через другое соединение ... поэтому в зависимости от того, как именно pgAdmin организует свои соединения, даже возможность находить таблицы в проводнике объектов может оказаться бесполезной.

1 голос
/ 17 февраля 2017

Вот один из способов получить имя схемы pg_temp_ nnn для вашего сеанса:

select distinct 'pg_temp_'||sess_id from pg_stat_activity where procpid = pg_backend_pid()

Это идентифицирует сеанс, на котором выполняется сам этот оператор SQL, и возвращает идентификатор сеанса, под которым он выполняется.

Затем вы можете использовать это для отображения всех ваших временных таблиц:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...