README.md

psql2

English

Клиент PostgreSQL в виде одного исполняемого файла для тех, кому нужны интерактивные возможности pgcli без установки Python, с привычными командами и сценариями psql.

Примеры использования

Подключитесь с теми же параметрами соединения, которые используете в psql или pgcli:

psql2 -h localhost -p 5432 -U postgres -d postgres

В интерактивной оболочке доступны подсветка SQL, контекстное дополнение по Tab, поиск по истории и подсказки из истории. Чтобы принять видимую подсказку, нажмите стрелку вправо или Ctrl-E. Поддерживаются привычные команды \l, \d, \d+, \x и \timing. Для аутентификации используйте файл паролей PostgreSQL или переменную PGPASSWORD.

Выполните запрос, существующий SQL-сценарий или экспортируйте CSV с параметрами psql:

psql2 -h localhost -p 5432 -U postgres -d postgres -c 'SELECT current_database(), current_user;'
psql2 -X -h localhost -p 5432 -U postgres -d postgres -v ON_ERROR_STOP=1 -f report.sql
psql2 -h localhost -p 5432 -U postgres -d postgres --csv \
  -c 'SELECT datname FROM pg_database ORDER BY datname;' > databases.csv

Для настройки в стиле pgcli и подключения через псевдоним DSN создайте каталог настроек и сохраните следующий текст в конфигурационный файл по умолчанию:

  • Linux: $XDG_CONFIG_HOME/psql2/config или ~/.config/psql2/config, если XDG_CONFIG_HOME не задана или пуста.
  • macOS: ~/Library/Application Support/psql2/config.
  • Windows: %AppData%\psql2\config.

Подсказки из истории (auto_suggest) и скрытие текста избранного запроса перед выполнением (hide_named_query_text) включены по умолчанию. Секция [main] ниже необязательна; чтобы отключить настройку, задайте ей значение False.

[main]
auto_suggest = True
hide_named_query_text = True

[alias_dsn]
local = postgresql://postgres@localhost:5432/postgres

Затем подключитесь через псевдоним:

psql2 -D local

Для выбора другого конфигурационного файла укажите --psql2rc /path/to/psql2.ini. --pgclirc сохранён как совместимый псевдоним; также поддерживается --config.

Сохраните избранный запрос и используйте его в интерактивной оболочке:

\ns activity SELECT pid, state FROM pg_stat_activity LIMIT $1;
\n activity 5
\np activity

Команда \ns сохраняет запрос в выбранном конфигурационном файле. Команда \n выполняет его с аргументами, а \np показывает определение. Поддерживаемые настройки, аргументы шаблонов, команды и ограничения при переходе описаны в справочнике совместимости на английском языке.

psql2, psql и pgcli

psql pgcli psql2
Среда выполнения Нативный клиент, использующий libpq Приложение на Python и его пакеты Автономный бинарный файл на Go; для запуска не нужны Python, libpq или Go
Интерактивная работа Дополнение SQL, редактирование и история в стиле readline Умное и нечёткое дополнение, подсветка и подсказки из истории Контекстное дополнение по префиксу, подсветка, подсказки и ранжирование по истории; нечёткое дополнение ещё не реализовано
Сценарии и параметры Эталонное поведение psql Клиент с упором на интерактивную работу и собственными соглашениями Параметры, сценарии, переменные и транзакции в стиле psql с описанными ограничениями
Настройка psqlrc и переменные окружения PostgreSQL pgclirc Пользовательский psqlrc, переменные окружения PostgreSQL и поддерживаемая часть pgclirc
Основной акцент Эталонный CLI PostgreSQL и выполнение сценариев Удобная интерактивная работа с SQL Удобства pgcli с командами и поведением сценариев psql

При расхождении значений приоритет имеет поведение psql. В psql2 параметр -h задаёт сервер, -v устанавливает переменную, а -V выводит версию. Для справки используйте --help. Совместимость пока частичная: прежде чем переносить конфигурацию целиком или использовать существующий сценарий без изменений, прочитайте COMPATIBILITY.md. Оставшиеся задачи перечислены в плане разработки, где приоритет отдан возможностям pgcli.

Установка готового выпуска

Скачайте архив для своей операционной системы и архитектуры со страницы выпусков. Доступны сборки для Linux, macOS и Windows на amd64 и arm64. Пакеты Linux/macOS имеют формат .tar.gz, Windows — .zip.

Сверьте контрольную сумму архива с SHA256SUMS из выпуска; если этот файл поставлен в ZIP, сначала распакуйте его. Извлеките исполняемый файл, переименуйте его в psql2 (psql2.exe в Windows) и поместите в каталог из PATH. Unix-архивы сохраняют разрешение на выполнение. Проверка интерактивной работы непосредственно в macOS и Windows ещё предстоит; подробности есть в справочнике совместимости.

Сборка из исходного кода

Установите mise, затем выполните:

mise trust
mise install
mise run build

Автономный исполняемый файл появится в bin/psql2. В Windows явно соберите .exe:

mise exec -- go build -trimpath -o bin/psql2.exe ./cmd/psql2

Установите собранный файл в Linux или macOS:

mkdir -p "$HOME/.local/bin"
install -m755 bin/psql2 "$HOME/.local/bin/psql2"

Убедитесь, что каталог $HOME/.local/bin добавлен в PATH. В Windows скопируйте bin/psql2.exe в каталог, указанный в PATH.

Кросс-компиляция

Конфигурация mise отключает CGO. В POSIX-совместимой оболочке укажите целевую ОС и архитектуру:

mkdir -p dist
GOOS=linux GOARCH=arm64 mise exec -- go build -trimpath -o dist/psql2-linux-arm64 ./cmd/psql2
GOOS=darwin GOARCH=arm64 mise exec -- go build -trimpath -o dist/psql2-darwin-arm64 ./cmd/psql2
GOOS=windows GOARCH=amd64 mise exec -- go build -trimpath -o dist/psql2-windows-amd64.exe ./cmd/psql2

Проверки при разработке

mise run fmt
mise run check
Описание
Современный psql. Postgresql cli для нормальных людей.
Релизы
2026-10-27
последний
Конвейеры
8 успешных
0 с ошибкой
Разработчики