Найти в Дзене
Pavel Zloi

Заметка про быстрые команды PostgreSQL

Оглавление

Всем привет! Постоянно забываю быстрые мета-команды для работы с СУБД PostgreSQL, поэтому решил написать небольшую заметку для себя, но может кому из моих подписчиков это тоже пригодится.

Подключение

Для тестирования подключения проще всего использовать официальный клиент psql который идёт в пакете postgresql-client:

apt install postgresql-client

Далее можно пользоваться им при помощи командной строки:

psql -h 192.168.1.10 -U pasha -p 5432 -d database

Система отобразит приглашение ввести пароль.

  • -h (--host) адрес хоста на котором запущена база (по умолчанию localhost);
  • -p (--port) порт на котором она доступна (по умолчанию 5432);
  • -U (--user) имя пользователя из под которого происходит подключение (по умолчанию текущий юзер из под которого запускается psql);
  • -d (--dbname) название базы данных на которую нужно переключить контекст после подключения (по умолчанию postgres);

Если хочется автоматизировать работу скрипта и явным образом передавать пароль пользователя на вход psql нужно использовать ключ

  • -W (--password) данная опция предполагает что пароль будет передаваться через аргументы командной строки.

Если нужно подключиться используя SSL сертификаты, то задачка будет чуть сложнее, но тоже решаемая.

psql "sslmode=require sslcert=/path/to/client_cert.pem sslkey=/path/to/client_key.pem host=example.com dbname=mydatabase user=myuser"

В данном случае используются мета-команда \connect на вход которой передаются опции:

  • sslmode=require - принудительно включает SSL режим;
  • sslcert - указывает путь до клиентского SSL сертификата;
  • sslkey - путь до закрытого (приватного) клиентского SSL ключа;
  • host - адрес сервера;
  • dbname - название базы данных;
  • user - имя пользователя.

Разумеется таким способом можно указать ещё и password и port и много чего ещё, но сильно задерживаться не будем и перейдём к быстрым мета-командам.

Быстрые мета-команды

Список команд которыми мне доводилось пользоваться чаще всего, а так же те про которые я узнал когда решил написать эту публикацию.

Частые команды

  • \c (\connect) - команда подключения к удалённой или локальной базе, оболочка переключает контекст на указанную базу;
  • \l (\list) - отобразить список доступных баз данных;
  • \dt - отобразить простой список всех таблиц в текущей базе данных без подробной дополнительной информации. Она выводит только имена таблиц;
  • \dt+ - также отображает список всех таблиц в текущей базе данных, но с дополнительными подробностями. Она включает в себя столбцы, связанные с каждой таблицей, такие как тип данных, ограничения (constraints), владельца (owner), размер таблицы и т.д.;
  • \d <table> - отобразить подробную информацию о таблице (эдакий describe);
  • \q - выйти из оболочки psql.

Административные команды

  • \du или \dg - отобразить список пользователей или групп ролей со всеми их атрибутами и привилегиями.
  • \dn - отобразить список схем базы данных.
  • \df - отобразить список функций (пользовательских и системных) базы данных;
  • \di <table> - отобразить список индексов указанной таблицы;
  • \dv - отобразить список представлений (VIEW).
  • \dp - отобразить список привилегий на таблицы и представления.
  • \db - отобразить список блокировок базы данных.
  • \x - вкл/откл форматирование вывода в режим "расширенный" (expanded display).

Управление сеансами и транзакциями

  • \conninfo - отобразить информацию о текущем подключении.
  • \watch - повторять выполнение SQL-запроса через определенные интервалы, ближайший аналог это команда watch в Linux;
  • \timing - вкл/откл отображение времени выполнения запросов.
  • \set - создание и изменение пользовательских переменных в psql, что-то типа export в bash;
  • \unset - удаление пользовательских переменных, работает так же как unset в bash;
  • \g - повторить предыдущий SQL-запрос;
  • \ef - редактировать функцию;
  • \ev - редактировать представление (VIEW).

Работа с файлами

  • \i </path/to/file,sql> - запустить SQL-скрипт из файла;
  • \o </path/to/file.log> - перенаправить весь вывод запроса в указанный файл;
  • \copy <file> <table> - копировать данные между таблицей и файлом;
  • \qecho - вкл/откл вывод запроса в режиме "quiet".

Полезные SQL запросы

Показать версию PostgreSQL:

SELECT version();

Показать текущую дату и время PostgreSQL:

SELECT now();

Показать текущую, дату, время и таймстамп:

SELECT current_date;
SELECT current_time;
SELECT current_timestamp;

Показать список текущих сеансов:

SELECT * FROM pg_stat_activity;

Отобразить статистику использования базы данных:

SELECT * FROM pg_stat_database;

Послесловие

PostgreSQL - это мощная система управления базами данных с обширным набором функций и команд, предоставляющих широкий спектр возможностей для администрирования, разработки и управления данными. Мы с вами рассмотрели лишь малую часть возможностей данной замечательно СУБД, но моя цель была не в полном разборе всего, а в систематизации моих заметок на тему быстрых команд. Однако, хочу заметить что с полным списком всех мета-команд можно ознакомиться при помощи man psql либо же вот по этой ссылке.

Спасибо вам огромное за то, что прочитали эту статью до конца. Надеюсь, вы нашли для себя что-то новое и полезное. Если вам понравилась статья, не забудьте прожать лайк и подписаться на мой блог. Это мотивирует меня продолжать делиться с вами своими знаниями и опытом.

Также приглашаю вас в мой Telegram-канал, где я регулярно публикую интересные материалы и полезные ссылки, связанные с миром нейросетей и программирования в целом.

К тому же, если вы хотите поддержать мои усилия и вклад в развитие общества знаний, вы можете сделать пожертвование на CloudTips. Ваша поддержка поможет мне продолжать свою работу и делиться новыми открытиями с вами.

До новых встреч в следующих статьях!