psql и мета-команды

Осваиваем главные мета-команды psql — без них работа в консоли будет вслепую.

Мета-команды — это служебные команды psql, начинающиеся с обратного слеша (\); они не отправляются на сервер как SQL, а выполняются самим клиентом.

Два вида команд внутри psql

В psql вы вводите два рода команд. Первый — обычный SQL, он заканчивается точкой с запятой и уходит на сервер. Второй — мета-команды клиента: они короткие, начинаются с \ и не требуют точки с запятой. Мета-команды показывают структуру базы и управляют сессией.

Навигация по базе

Эти команды отвечают на вопрос «что вообще есть в базе».

\l            -- список всех баз данных кластера
\c shop       -- переключиться (connect) на базу shop
\dt           -- список таблиц текущей базы
\dn           -- список схем
\dv           -- список представлений (views)
\df           -- список функций

Команда \dt покажет таблицы, их схему и владельца. Если таблиц нет, psql честно скажет «Did not find any relations».

Структура конкретной таблицы

Самая частая команда в повседневной работе — \d имя_таблицы. Она показывает столбцы, их типы, ограничения и индексы.

\d users          -- структура таблицы users
\d+ users         -- то же, но подробнее (с размером, комментариями)

Вывод \d users выглядит примерно так — колонки, типы, можно ли NULL и значения по умолчанию:

              Table "public.users"
 Column |     Type      | Nullable |   Default
--------+---------------+----------+-----------
 id     | integer       | not null | nextval(...)
 email  | varchar(255)  | not null |
 name   | text          |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)

Управление сессией и помощь

КомандаЧто делает
\qвыйти из psql
\?справка по мета-командам
\h SELECTсправка по синтаксису SQL-команды
\xвключить расширенный (вертикальный) вывод
\timingпоказывать время выполнения запросов
\i file.sqlвыполнить SQL из файла

Особенно полезен \x: когда в строке много столбцов и они не влезают по ширине, вертикальный режим показывает каждое поле на своей строке. А \h — встроенный справочник: \h CREATE TABLE мгновенно напомнит синтаксис.

Выполнение SQL из файла

Скрипты со схемой и данными удобно держать в файлах и прогонять целиком — это основа повторяемых миграций и сидов.

# Прямо из шелла, не заходя в psql:
psql -U postgres -d shop -f schema.sql

# Или уже внутри psql:
\i schema.sql

Итог

  • Мета-команды начинаются с \ и выполняются клиентом, а не сервером; точка с запятой им не нужна.
  • \l — базы, \dt — таблицы, \d имя — структура таблицы, \q — выход.
  • \i file.sql и psql -f прогоняют SQL из файла; \x включает удобный вертикальный вывод.
Проверьте себя
1. Чем мета-команды psql отличаются от SQL-запросов?
AОни выполняются на сервере и требуют точку с запятой
BОни начинаются с обратного слеша и выполняются клиентом psql
CОни работают только в pgAdmin
DЭто синонимы, разницы нет
2. Какая команда покажет структуру таблицы users (столбцы, типы, ограничения)?
A\l users
B\dt users
C\d users
D\q users
3. Как выполнить SQL-скрипт из файла schema.sql, находясь внутри psql?
A\run schema.sql
B\i schema.sql
CSELECT schema.sql;
D\file schema.sql
Поддержать проект