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. Она открывает текущий буфер запроса во внешнем текстовом редакторе. Если буфер пуст, для редактирования будет открыт последний выполненный запрос.