psql — это стандартная утилита командной строки для взаимодействия с серверами PostgreSQL. Она совмещает две возможности:
выполнить любые SQL-запросы (CREATE, INSERT, SELECT и т.д.);
использовать специальные «мета‑команды» psql (начинаются с обратной косой черты) для быстрой инспекции, навигации и выполнения вспомогательных задач.
Важно: термины
psql — клиентская программа командной строки. Одним предложением: простой текстовый клиент для работы с PostgreSQL.
Как запустить psql
Если PostgreSQL установлен, запустите psql из терминала командой:
psql
Если вы видите ошибку psql: command not found, PostgreSQL либо не установлен, либо путь к исполняемому файлу не добавлен в переменную PATH. В последнем случае добавьте путь к bin-дереву PostgreSQL в PATH.
Чтобы подключиться к конкретной базе данных, укажите её имя:
psql orders
По умолчанию сервер слушает порт 5432. Если используется нестандартный порт, добавьте опцию -p:
psql -p 1234
Вы также можете указать имя пользователя (-U) и хост (-h):
psql -h db.example.local -U alice -d orders -p 5432
Список баз данных и переключение между ними
После запуска интерактивной оболочки вы увидите приглашение, показывающее текущую базу, например:
postgres=#
Быстрая команда для просмотра всех баз:
\l
Она выводит таблицу с именами баз, владельцами, кодировкой и привилегиями.
Чтобы переключиться на другую базу, используйте:
\c postgres
Если вызвать просто \c без аргументов, psql выведет текущую базу и пользователя.
Инспекция таблиц и метаданных
Команды для получения информации о таблицах, представлениях и последовательностях:
Показать все объекты (таблицы, представления, последовательности):
Эти команды выводят данные в удобном табличном текстовом формате.
Совет: для больших схем используйте фильтры схемы или регулярные выражения в командах psql.
Полезные мета‑команды psql
Ниже — краткая подборка часто используемых команд. Они удобнее для быстрого изучения базы, чем выполнение SQL-запросов к системным каталогам.
\? — список всех мета‑команд psql и синопсис.
\h — справка по SQL-операторам (например, \h CREATE TABLE).
\s — история введённых команд.
\e — открыть последний SQL-запрос в редакторе по умолчанию (редактировать длинные запросы).
\x — переключить расширенный режим вывода (удобно для широких строк).
\timing — показывать время выполнения команд.
\set AUTOCOMMIT off/on — управлять автокоммитом в сессии.
Примеры:
\? -- список мета-команд
\h SELECT -- справка по оператору SELECT
\x -- включить/выключить расширенный вывод
\timing -- показывать время выполнения
Быстрая методология проверки базы (мини-метод)
Подключитесь к серверу безопасным способом (ssh + psql или прямой psql при локальном доступе).
Просмотрите список баз: \l. Выберите целевую базу и переключитесь на неё: \c .
Список таблиц: \dt. Описание структуры важной таблицы: \d
.
Включите \timing и выполните ключевые SELECT-запросы для проверки объёма данных и индексов.
Используйте \x при длинных записях, чтобы легче читать вывод.
Закройте сессию командой \q.
Критерии приёмки
Удалось подключиться к базе и получить список таблиц.
Получено описание структуры ключевых таблиц.
Проверена производительность через \timing для одного тестового запроса.
Шпаргалка: быстрые команды (cheat sheet)
psql -h host -U user -d dbname -- подключиться к конкретной базе
\l -- список баз
\c dbname -- подключиться к dbname
\d -- список таблиц/представлений/последовательностей
\dt -- список только таблиц
\dv -- список только представлений
\d+ table -- подробная информация о таблице (включая размер)
\i filename.sql -- выполнить SQL-скрипт из файла
\o filename -- перенаправить вывод в файл
\q -- выйти из psql
Краткое пояснение: команды с обратной косой чертой — это не SQL; их интерпретирует клиент psql.
Чек‑листы по ролям
DBA:
Убедиться, что сервер работает и слушает ожидаемый порт.
Проверить список баз (\l) и владельцев.
Описать структуру критичных таблиц (\d+ table).
Проверить индексы и планы запросов (EXPLAIN ANALYZE).
Разработчик:
Подключиться к нужной базе (\c dbname).
Просмотреть структуру таблицы (\d table) перед изменениями.
Использовать \e для редактирования больших SQL-запросов.
Запускать миграции через файлы: \i migrations/001_init.sql.
DevOps/инженер CI:
Автоматически запускать psql с параметрами -h -U -d для скриптов в пайплайне.
Логировать вывод \o в артефакты сборки.
Проверять время выполнения запросов (\timing) в тестах производительности.
Отладка и распространённые ошибки
Ошибка: psql: command not found
Причина: клиент не установлен или PATH не настроен.
Решение: установить пакет postgresql-client или добавить путь к psql в PATH.
Проверьте правильность имени пользователя и пароля, а также настройки pg_hba.conf на сервере.
Если соединение отклоняется (connection refused)
Проверьте, запущен ли сервер PostgreSQL, и слушает ли он нужный интерфейс и порт.
Если вывод слишком длинный или нечитабелен
Включите расширенный вывод (\x) или перенаправьте результаты в файл (\o filename).
Decision flow: как быстро определить, что нужно делать
flowchart TD
A[Начало: не подключены?] -->|нет| B{Есть доступ к psql?}
A -->|да| C[Запустить psql -h -U -d]
B -->|да| C
B -->|нет| D[Установить клиент или настроить PATH]
C --> E{Какая задача?}
E -->|Просмотр баз| F[\l]
E -->|Просмотр таблиц| G[\dt -> \d table]
E -->|Выполнение скрипта| H[\i script.sql]
F --> I[Дальше: переключиться \c dbname]
G --> I
H --> I
I --> J[Завершить: \q]
Короткий словарь
Метa‑команда (psql): команда клиента psql, начинающаяся с обратной косой черты (например, \d, \l).
Расширенный вывод: режим \x, который форматирует строки вертикально для удобства чтения.
EXPLAIN ANALYZE: SQL-команда для получения плана выполнения и реального времени.
Когда psql не подходит (кратко)
Для автоматизированных сценариев часто удобнее использовать libpq/psycopg2/pgx и запускать SQL напрямую из приложения или скрипта.
Для графического анализа схемы лучше применять GUI (pgAdmin, DBeaver).
Итог и рекомендации
psql — лёгкий и мощный инструмент для интерактивной работы с PostgreSQL: от быстрой инспекции метаданных до прототипирования SQL. Запомните ключевые мета‑команды (\l, \c, \d, \dt, \dv, \?) и используйте \e и \timing при работе с длинными запросами и производительностью. Для автоматизации интегрируйте psql в CI/CD скрипты или переходите на библиотечные драйверы, если требуется программный контроль.
Важно: всегда тестируйте изменения структуры в средах разработки и используйте контроль версий для скриптов миграции.