psql команды — полный справочник с примерами

psql — командная строка PostgreSQL. Всё что нужно для работы с базой данных без GUI. Разбираем все slash-команды, параметры подключения, форматирование вывода и выполнение скриптов.

PostgreSQL база знаний: перейти в рубрику с уроками на русском языке

Запуск psql и подключение к базе

# Подключиться к базе postgres (по умолчанию):
psql -U postgres

# Подключиться к конкретной базе:
psql -U postgres -d mydb

# Полный набор параметров:
psql -h localhost -p 5432 -U myuser -d mydb

# Запросить пароль явно:
psql -U postgres -W

# Linux — от системного пользователя postgres:
sudo -u postgres psql
sudo -u postgres psql -d mydb

# Через строку подключения (URL):
psql "postgresql://myuser:mypass@localhost:5432/mydb"

# Выполнить одну команду и выйти:
psql -U postgres -c "SELECT version();"
psql -U postgres -d mydb -c "\dt"

Команды навигации — базы, таблицы, схемы

-- Базы данных:
\l          -- список всех баз данных
\l+         -- список с размерами и владельцами

-- Подключение к базе:
\c mydb              -- переключиться на базу mydb
\c mydb myuser       -- переключиться с другим пользователем
\conninfo            -- показать текущее подключение

-- Схемы:
\dn         -- список схем
\dn+        -- схемы с правами доступа

-- Таблицы:
\dt         -- таблицы в текущей схеме (public)
\dt *.*     -- таблицы во всех схемах
\dt users   -- информация о таблице users

-- Структура таблицы:
\d users    -- колонки, типы, ограничения, индексы
\d+ users   -- расширенная информация + комментарии

-- Другие объекты:
\di         -- индексы
\dv         -- представления (VIEW)
\dm         -- материализованные представления
\df         -- функции
\ds         -- sequences
\dp         -- права доступа (таблицы, схемы)

Пользователи и права

-- Пользователи и роли:
\du         -- список пользователей/ролей
\du+        -- с дополнительными атрибутами
\du myuser  -- информация о конкретном пользователе

-- Сменить пароль текущего пользователя:
\password

-- Сменить пароль конкретного пользователя:
\password postgres

Выполнение запросов и скриптов

-- Запрос — ввести и нажать Enter после ";":
SELECT * FROM users LIMIT 5;

-- Многострочный запрос (psql ждёт ; для выполнения):
SELECT id, email, created_at
FROM users
WHERE active = true
ORDER BY created_at DESC
LIMIT 10;

-- Выполнить SQL файл:
\i /path/to/script.sql

-- Выполнить файл с параметрами:
\i /tmp/init.sql

-- Из bash без входа в psql:
psql -U postgres -d mydb -f script.sql

Форматирование вывода

-- Расширенный режим (вертикальный вывод — удобно для широких таблиц):
\x
-- Или автоматически (переключается по ширине терминала):
\x auto

-- Отключить заголовки столбцов:
\t

-- Показать время выполнения запроса:
\timing

-- Отключить постраничный вывод (more/less):
\pset pager off

-- Отображение NULL значений:
\pset null 'NULL'

-- Сохранить вывод запроса в файл:
\o output.txt
SELECT * FROM users;
\o        -- выключить вывод в файл

-- Формат вывода (aligned, unaligned, csv, html):
\pset format csv
\pset format aligned   -- вернуть к стандартному

Полная таблица slash-команд

КомандаОписание
\lСписок баз данных
\c имяПодключиться к БД
\dtСписок таблиц
\d таблицаСтруктура таблицы
\duСписок пользователей
\dnСписок схем
\dvСписок VIEW
\diСписок индексов
\dsСписок sequences
\dfСписок функций
\dpПрава доступа
\i файлВыполнить SQL файл
\o файлСохранить вывод в файл
\xПереключить вертикальный режим
\timingПоказать время запроса
\conninfoТекущее подключение
\passwordИзменить пароль
\eОткрыть редактор для запроса
\sИстория команд
\qВыйти из psql
\h командаСправка по SQL команде
\?Справка по psql командам

Полезные системные запросы

-- Версия PostgreSQL:
SELECT version();
SHOW server_version;

-- Текущая база, пользователь, порт:
SELECT current_database(), current_user;
SHOW port;

-- Размер всех баз данных:
SELECT datname, pg_size_pretty(pg_database_size(datname)) AS size
FROM pg_database ORDER BY pg_database_size(datname) DESC;

-- Список таблиц с размерами:
SELECT tablename, pg_size_pretty(pg_total_relation_size(tablename::regclass)) AS size
FROM pg_tables WHERE schemaname = 'public'
ORDER BY pg_total_relation_size(tablename::regclass) DESC;

-- Все активные подключения:
SELECT pid, usename, datname, state, query
FROM pg_stat_activity WHERE state != 'idle';

Часто задаваемые вопросы

Как выйти из psql?

Набрать \q и нажать Enter. Или нажать Ctrl+D — это стандартный сигнал конца ввода в Unix-терминалах, psql корректно завершается. На Windows также работает Ctrl+Z + Enter. Если psql завис на незавершённом запросе (видите -# вместо =#), введите ; чтобы завершить запрос, или Ctrl+C чтобы отменить.

Как посмотреть все таблицы в PostgreSQL через psql?

Команда \dt показывает таблицы в текущей схеме (public). Для таблиц в других схемах: \dt analytics.*. Для всех схем: \dt *.*. Через SQL: SELECT tablename FROM pg_tables WHERE schemaname = 'public';. Чтобы увидеть таблицы конкретной базы — сначала переключиться на неё: \c mydb, затем \dt.

Как подключиться к удалённому PostgreSQL через psql?

Указать хост через параметр -h: psql -h 192.168.1.100 -p 5432 -U myuser -d mydb. Или через строку подключения: psql "postgresql://myuser:mypass@192.168.1.100:5432/mydb". Важно: на удалённом сервере PostgreSQL должен быть настроен listen_addresses и pg_hba.conf должен разрешать подключения с вашего IP. Порт 5432 должен быть открыт в firewall.

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x