Подтвердить что ты не робот

Показать типы столбцов результатов запроса (PostgreSQL)

Есть ли способ легко получить типы столбцов результата запроса? Я прочитал документацию psql, но я не думаю, что это поддерживает. В идеале я мог бы получить что-то вроде:

 columna : text | columnb : integer
----------------+-------------------
 oh hai         |                42

Есть ли способ получить эту информацию без какого-либо кодирования?

4b9b3361

Ответ 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)

Ура!