PostgreSQL | Как получить имена столбцов таблицы?

PostgreSQL | Как получить имена столбцов таблицы?

Исходная таблица со столбцами

Прежде чем получать имена столбцов таблицы, давайте создадим её.

-- Тестовая таблица -- DROP TABLE test.t_2022_12_19;
CREATE TABLE IF NOT EXISTS test.t_2022_12_19
(
   col1 text,
   col22 text,
   col333 text,
   col4444 text
);

В веб-интерфейсе pgAdmin4 она выглядит так:

Таблица из четырёх столбцов без данных в PostgreSQL
Таблица из четырёх столбцов без данных в PostgreSQL

Данных в таблице нет. Но они нас не интересуют так как задача заключается в другом.

 

Получение имён столбцов таблицы в PostgreSQL через представление у схемы (объекта СУБД) information_schema

У любой базы данных в PostgreSQL есть такая схема данных, которая называется «information_schema«. В тексте мы будем называть её «Информационная схема«.

«Информационная схема» состоит из набора представлений, содержащих информацию об объектах, определённых в текущей базе данных.

«Информационная схема» не относится к каталогам самого PostgreSQL. «Информационная схема» описана в стандарте SQL, который более масштабен и уникален во всём мире. Это значит что «Информационная схема» будет доступна любой базе данных на основе SQL, в том числе и для PostgreSQL.

В «Информационной схеме» существует 64 представления на 2023 год на 15 версию PostgreSQL.

Нас интересует представление, которое называется «columns«. Оно  показывает информацию обо всех столбцах таблиц (или столбцах представлений) в базе данных.

Если в базе данных много таблиц или много столбцов, то обращение к получению всех столбцов может вызвать перегруз. Записей в итоговой таблице может быть очень много. Но если вы всё равно хотите рискнуть и увидеть их все, то команда выглядит так:

SELECT * FROM information_schema.columns;

Но если нас интересует всего одна таблица, то мы можем добавить в запрос предложение WHERE:

SELECT column_name
FROM information_schema.columns
WHERE table_schema = 'test' AND table_name = 't_2022_12_19'
ORDER BY ordinal_position ASC;

Чтобы не возникали конфликты, мы указываем имя схемы данных (table_schema) и название самой таблицы в этой схеме данных (table_name).

В результате получаем имена столбцов нужной таблицы в вертикальном стиле — в виде столбца.

Получили имена столбцов нужной таблицы в PostgreSQL
Получили имена столбцов нужной таблицы в PostgreSQL

 

Информационные ссылки

Официальный сайт WEB-оболочки pgAdminhttps://www.pgadmin.org

Официальный сайт СУБД PostgreSQLhttps://www.postgresql.org

Раздел «Ограничения» — https://postgrespro.ru/docs/postgresql/15/ddl-constraints

Раздел «Информационная схема» — https://postgrespro.ru/docs/postgresql/15/information-schema

Представление «columns» — https://postgrespro.ru/docs/postgresql/15/infoschema-columns