psql2
Клиент 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