Всем привет! Постоянно забываю быстрые мета-команды для работы с СУБД 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. Ваша поддержка поможет мне продолжать свою работу и делиться новыми открытиями с вами.
До новых встреч в следующих статьях!