Показать типы столбцов результатов запроса (PostgreSQL)
Есть ли способ легко получить типы столбцов результата запроса? Я прочитал документацию psql, но я не думаю, что это поддерживает. В идеале я мог бы получить что-то вроде:
columna : text | columnb : integer
----------------+-------------------
oh hai | 42
Есть ли способ получить эту информацию без какого-либо кодирования?
Ответы
Ответ 1
Я не думаю, что вы можете напечатать именно то, что у вас есть в образце, если вы не напишите для него хранимую процедуру.
Один способ сделать это (два "выбирает" ):
-
create table my_table as select ...
-
\d my_table
-
select * from my_table
Ответ 2
Можно получить любой тип столбца результата запроса SELECT.
Пример
Учитывая следующий запрос и результат, ответьте на вопрос * "Что такое тип столбца all_ids?" *
SELECT array_agg(distinct "id") "all_ids" FROM "auth_user";
all_ids
--------------------------------------------
{30,461577687337538580,471090357619135524}
(1 row)
Нам нужен механизм для раскрытия типа "all_ids".
В архивах списков рассылки postgres я нашел ссылку на собственную функцию pg, называемую pg_typeof
.
Пример использования:
SELECT pg_typeof(array_agg(distinct "id")) "all_ids" FROM "auth_user";
Вывод:
all_ids
----------
bigint[]
(1 row)
Ура!