Базовый инструментарий
Использование psql
16
Авторские права
© Postgres Professional, 2017–2024
Авторы: Егор Рогов, Павел Лузанов, Илья Баштанов, Алексей Береснев
Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы занятия
Запуск psql и подключение к БД
Получение справочной информации
Работа в psql
Настройка
3
Назначение
Терминальный клиент для работы с PostgreSQL
Поставляется вместе с СУБД
Используется администраторами и разработчиками
для интерактивной работы и выполнения скриптов
Для работы с СУБД PostgreSQL существуют различные сторонние
инструменты, рассмотрение которых не входит в рамки курса.
В курсе мы будем использовать терминальный клиент psql. Этот
клиент может показаться непривычным для тех, кто предпочитает
графические инструменты; тем не менее, он весьма удобен.
Это единственный клиент, поставляемый вместе с СУБД. Навыки
работы c psql пригодятся разработчикам и администраторам БД вне
зависимости от того, с каким инструментом они будут работать дальше.
4
Подключение
Запуск
$ psql -d база -U пользователь -h узел -p порт
Новое подключение в psql
=> \c[onnect] база пользователь узел порт
Информация о текущем подключении
=> \conninfo
При запуске psql определяет параметры подключения: имя базы
данных, имя пользователя, имя сервера, номер порта. Если эти
параметры не указаны, psql попробует подключиться, используя
значения по умолчанию:
база — совпадает с именем пользователя;
пользовательсовпадает с именем пользователя ОС;
узел — соединение через Unix-socket;
портобычно 5432.
Если требуется выполнить новое подключение не выходя из psql, нужно
выполнить команду \connect. Значения по умолчанию для нее
берутся из текущего соединения.
Команда \conninfo выдает информацию о текущем подключении.
Дополнительная информация о возможностях настройки подключения:
5
Получение справки
В командной строке ОС
$ psql --help
$ man psql
В psql
=> \? список команд psql
=> \? variables переменные psql
=> \h[elp] список команд SQL
=> \h команда синтаксис команды SQL
=> \q выход
Справочную информацию по psql можно получить не только
в документации, но и прямо в системе.
psql с ключом --help выдает справку по запуску. А если в системе
была установлена документация, то справочное руководство можно
получить командой man psql.
psql умеет выполнять команды SQL и свои собственные команды. Все
команды psql начинаются с обратной косой черты и, как правило, их
можно сокращать до первой буквы.
Внутри psql есть возможность получить список и краткое описание
команд psql: \?.
Команда \help выдает список команд SQL, которые поддерживает
сервер, а также синтаксис конкретной команды SQL.
И еще одна команда, которую полезно знать, хоть она и не имеет
отношения к справке: это \q — выход из psql. В качестве альтернативы
для выхода можно использовать команды exit и quit.
7
Итоги
psql — терминальный клиент для работы с СУБД
При запуске требуются параметры подключения
Выполняет команды SQL и psql
Содержит инструменты для интерактивной работы, а также
для подготовки и выполнения скриптов
8
Практика
1. Запустите psql и проверьте информацию о текущем
подключении.
2. Выведите список баз данных в подробном виде.
3. По умолчанию psql использует команду «less» для
постраничного просмотра результатов запроса. Замените ее
на команду «less -XS» и снова выведите подробный список
баз данных.
4. По умолчанию приглашение psql показывает имя базы
данных. Настройте приглашение так, чтобы дополнительно
выводилась информация о пользователе: роль@база=#
5. Настройте psql так, чтобы для всех команд выводилась
длительность выполнения. Убедитесь, что при повторном
запуске эта настройка сохраняется.
1. При запуске psql можно не указывать параметры подключения, будут
действовать значения по умолчанию.
2. Используйте команду \l+.
3. Программа постраничного просмотра настраивается переменной
окружения PSQL_PAGER. Настройку можно сделать в файле .psqlrc
с помощью команды \setenv. Это позволит задать значение «less -XS»
только для работы в psql, а в остальных случаях будут действовать
обычные настройки ОС. По умолчанию less переносит длинные строки
при просмотре и очищает свой вывод при выходе. Параметр -XS
отменяет это поведение.
4. Описание настройки приглашения в документации:
5. Команду psql для вывода длительности выполнения запросов можно
найти в документации или с помощью команды \?.
9
Практика+
1. Откройте транзакцию и выполните команду, которая
завершается любой ошибкой. Убедитесь, что продолжить
работу в этой транзакции невозможно.
2. Задайте переменной ON_ERROR_ROLLBACK значение on
и убедитесь, что после ошибки можно выполнять команды
внутри транзакции.
1. Чтобы открыть транзакцию, выполните команду
BEGIN;
2. Значение ON_ERROR_ROLLBACK = on заставляет psql
устанавливать точку сохранения (SAVEPOINT) перед каждой командой
SQL в открытой транзакции и в случае ошибки откатываться к этой
точке сохранения.