psql: основные команды

В стандартную поставку PostgreSQL входит утилита psql. Это CLI-клиент для работы с PostgreSQL. В статье собраны команды, которые чаще всего используются мной при работе с psql.

Демонстрационные примеры сделаны на ОС Debian 13 и PostgreSQL 17.

Доступ к psql

Клиент psql входит в набор клиентских утилит PostgreSQL и при стандартной установке обычно добавляется в систему автоматически. На Debian 13 в каталоге /usr/bin создаётся символьная ссылка на Perl-скрипт, который выбирает и запускает исполняемый файл подходящей версии.

ls -l $(which psql)
# /usr/bin/psql -> ../share/postgresql-common/pg_wrapper
file /usr/share/postgresql-common/pg_wrapper
# /usr/share/postgresql-common/pg_wrapper: Perl script text executable

Подключение к базе данных

psql -U <user_name> -h <server_name> -d <database_name>

Распространённые опции:

  • -U — имя пользователя. Если не передавать, то по умолчанию будет использоваться имя текущего пользователя в ОС;
  • -h — имя или адрес сервера PostgreSQL. Например, localhost или 127.0.0.1 указывают на сервер PostgreSQL, работающий на локальной машине. Без -h клиент обычно использует локальный Unix-сокет;
  • -d — имя базы данных. Как альтернатива, можно указать имя БД первым аргументом в команде. Я предпочитаю указывать опции явно;
  • -f filename — выполнить команды из указанного файла (может содержать операторы языка SQL и метакоманды psql).

Основные команды

Справка и выполнение команд

  • \q — выйти из psql;
  • \? — справка по основным сервисным командам psql;
  • \h — получить список всех SQL-команд;
  • \h CREATE TABLE — получить справку по указанной команде;
  • \i file_name — выполнить команды из указанного файла (может содержать операторы языка SQL и метакоманды psql);
  • \! cmd — выполнить команду в командной оболочке;
  • \x — переключить режим расширенного формата вывода.

Подключение к базе данных

  • \l — список баз данных в кластере;
  • \c db_name — подключиться к БД с именем db_name;
  • \connect db_name — аналог команде \c;
  • \conninfo — информация о текущем подключении.

Просмотр объектов базы данных

  • \dn — список схем в текущей БД;
  • \d — список видимых отношений: таблиц, представлений, последовательностей и других подобных объектов;
  • \d table_name — структура указанной таблицы;
  • \d+ table_name — подробное описание таблицы;
  • \dt — список видимых таблиц;
  • \df — список видимых функций;
  • \dv — список видимых представлений;
  • \di — список видимых индексов;
  • \di+ — подробная информация по индексам;
  • \du — список пользовательских ролей.

Измерение времени выполнения

  • \timing on, \timing off — включить и выключить секундомер. При включённом секундомере psql будет сообщать время, затраченное на выполнение запросов.

Удобные возможности psql

Автодополнение

psql поддерживает автодополнение по нажатию Tab. Дополняются ключевые слова SQL и имена объектов БД. Если введённых символов недостаточно для однозначного дополнения, после первого нажатия ничего не произойдёт. В таком случае повторное нажатие Tab покажет возможные варианты.

Многострочные запросы

psql позволяет вводить многострочные запросы. Для этого после ввода каждой строки нужно нажимать клавишу Enter. В конце команды необходимо поставить ;. Впоследствии введённый запрос можно вызвать из истории команд с помощью клавиши стрелка вверх. Если звпрос был введён построчно, то построчная структура сохранится.

Для редактирования многострочного запроса удобно использовать внешний редактор, вызываемый командой \e. Она открывает текущий буфер запроса во внешнем текстовом редакторе. Если буфер пуст, для редактирования будет открыт последний выполненный запрос.