Использование pgcli с PostgreSQL

pgcli — это улучшенный интерфейс командной строки для PostgreSQL. Его ключевые преимущества перед стандартным клиентом psqlконтекстное автодополнение команд, названий таблиц и столбцов, а также подсветка синтаксиса SQL.

Он сохраняет совместимость с большинством команд psql, поэтому знакомый инструмент становится удобнее.

📦 Установка и подключение

Установить pgcli можно через менеджеры пакетов:

  • Linux (Debian/Ubuntu): sudo apt install pgcli.
  • macOS (Homebrew): brew install pgcli.
  • Через pip (кросс-платформенно): pip install pgcli.

Подключиться к базе можно несколькими способами:

# Стандартное подключение с параметрами
pgcli -h localhost -p 5432 -U ваш_пользователь -d имя_базы
# Подключение через строку подключения (DSN)
pgcli postgres://пользователь:пароль@хост:порт/база
# Если пароль содержит спецсимволы (например, @), их нужно закодировать
pgcli 'postgresql://amjith:%40postgres@localhost:5432/app_db'

Как и в psql, можно использовать переменные окружения (PGHOST, PGUSER и т.д.).

🔧 Основные команды и примеры работы

Большинство метакоманд (\-команд) из psql работают и в pgcli.

Навигация и просмотр объектов

Следующие команды помогут вам быстро ориентироваться в структуре базы данных:

ДействиеКоманда в pgcliРезультат
Список всех баз данных\l или \listВыводит список БД на сервере.
Переключиться на другую БД\c имя_базыПодключение к указанной БД (автодополнение предложит варианты).
Список таблиц\dtПоказывает таблицы в текущей схеме.
Структура таблицы\d имя_таблицыПодробное описание столбцов, типов, индексов.
Список представлений (views)\dvВыводит список представлений.

Работа с таблицами и данными

Вот пример сессии, демонстрирующей создание таблицы и вставку данных с автодополнением:

-- 1. Создание таблицы. Начните вводить CREATE TABLE... pgcli предложит продолжить.
CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    department VARCHAR(50),
    salary INTEGER
);

-- 2. Вставка данных. При вводе INSERT INTO... автодополнение предложит имя таблицы 'employees'.
INSERT INTO employees (name, department, salary) VALUES
('Иван Петров', 'Разработка', 120000),
('Мария Сидорова', 'Аналитика', 95000);

-- 3. Запрос с JOIN. Автодополнение подскажет имена столбцов при вводе.
SELECT e.name, e.department FROM employees e WHERE e.salary > 100000;

Управление и служебные операции

  • Выполнить SQL из файла: \i /путь/к/файлу.sql.
  • Включить/выключить замер времени выполнения запроса: \timing.
  • Переключить расширенный вывод (вертикальный формат для широких таблиц): \x.
  • Выйти из pgcli: \q или quit.

⚡ Уникальные возможности pgcli

  1. Умное автодополнение: Подсказывает ключевые слова, имена таблиц, столбцов и даже функции по мере ввода.
  2. Режим многострочного редактирования: Можно писать длинные, читаемые запросы. Режим включается клавишей F3.
  3. Именованные запросы: Сохраняйте часто используемые запросы для быстрого вызова.
    -- Сохранить запрос
    \ns top_earners SELECT * FROM employees WHERE salary > 100000;
    -- Выполнить сохраненный запрос
    \n top_earners
    -- Список всех именованных запросов
    \n
  4. Открытие запроса в редакторе: Нажмите \e в командной строке, чтобы открыть последний запрос во внешнем текстовом редакторе (например, vim или nano).
  5. Работа через SSH-туннель: Позволяет безопасно подключаться к удаленным базам.
  6. Интеграция с IPython: Запуск pgcli прямо из консоли IPython для анализа результатов.

⚙️ Настройка и советы

  • Файл конфигурации находится в ~/.config/pgcli/config. В нём можно настроить цветовые темы, поведение автодополнения и приглашение командной строки.
  • Справка: В любой момент введите \? для списка метакоманд или \h для помощи по синтаксису SQL.
  • Для резервного копирования и восстановления (pg_dump, pg_restore) используйте эти утилиты в системной командной строке, а не внутри pgcli. Сам pgcli предназначен для интерактивной работы.

Что выбрать: pgcli или psql?

  • pgcli — лучший выбор для повседневной интерактивной работы, написания и исследования запросов благодаря автодополнению и подсветке.
  • psql стоит использовать для автоматизации в скриптах, так как это стандартный инструмент, гарантированно доступный на всех серверах.

Итог: pgcli делает работу с PostgreSQL в терминале значительно быстрее и приятнее. Основные команды привычны для пользователей psql, а продвинутые функции вроде автодополнения и именованных запросов сокращают количество рутинных действий.

Если вам нужно углубиться в конкретную тему, например, тонкую настройку файла конфигурации или использование всех параметров pg_dump, просто уточните ваш запрос.

Зависимости: pgcli, debian stable, postgresql