Включение psql: Основное руководство по мета-командам PostgreSQL
Изучите мета-команды psql, которые помогут вам просматривать схемы, форматировать вывод, переключать базы данных и работать быстрее из терминала.
Усиление psql: Основное руководство по мета-командам PostgreSQL
Когда вы работаете с PostgreSQL из терминала, мета-команды psql избавляют вас от необходимости писать каталоговые запросы для повседневных проверок. Эти команды с обратной косой чертой помогают вам выводить списки таблиц, описывать объекты, переключать базы данных, форматировать вывод и получать справку, не выходя из сеанса.
Это руководство охватывает команды psql, которые вы будете использовать чаще всего, и показывает, где они применяются в реальной работе с базами данных.
Понимание мета-команд psql
Мета-команды в psql — это директивы, которые обрабатываются самим psql, а не отправляются на выполнение серверу PostgreSQL. Их легко узнать по ведущему обратному слешу (\). Это различие важно, поскольку мета-команды имеют свой собственный синтаксис и поведение, отличные от стандартного SQL.
Например, хотя вы можете написать SELECT * FROM information_schema.tables; для вывода списка всех таблиц, мета-команда psql может достичь того же результата с помощью простого \dt.
Основные мета-команды для просмотра базы данных
Просмотр структуры базы данных — частая задача. psql предоставляет несколько мета-команд, чтобы сделать этот процесс простым.
Вывод списка таблиц (\dt)
Команда \dt — одна из наиболее часто используемых мета-команд. Она выводит список всех таблиц в текущей базе данных вместе с их схемой и владельцем.
Пример:
\dtВывод:
List of relations Schema | Name | Type | Owner --------+------------+-------+---------- public | accounts | table | postgres public | products | table | postgres sales | orders | table | dbadmin (3 rows)Варианты:
\dt+: Предоставляет более подробную информацию, включая размер таблицы и описание.\dt schema.*: Выводит таблицы только в определенной схеме.
Описание таблиц и столбцов (\d)
Команда \d незаменима для понимания структуры конкретной таблицы, включая ее столбцы, типы данных, ограничения и индексы.
Пример: Чтобы описать таблицу
products:\d productsВывод:
Table "public.products" Column | Type | Collation | Nullable | Default ----------+-----------------------+-----------+----------+--------- product_id | integer | | not null | name | character varying(100)| | | price | numeric(10, 2) | | | Indexes: "products_pkey" PRIMARY KEY, btree (product_id)Варианты:
\d+ table_name: Предоставляет еще более подробную информацию, включая параметры хранения и комментарии.\dn: Выводит список всех схем.\df: Выводит список всех функций.\dv: Выводит список всех представлений.
Просмотр представлений (\dv)
Аналогично таблицам, вы можете выводить список и описывать представления.
Пример (Список представлений):
\dvПример (Описание представления):
\dv my_view
Вывод списка схем (\dn)
Чтобы увидеть все схемы, присутствующие в вашей базе данных, используйте команду \dn.
- Пример:
\dn
Мета-команды для управления запросами и контроля вывода
psql предлагает мощные возможности для управления отображением результатов запросов и управления историей запросов.
Время выполнения запроса (\timing)
Команда \timing включает/выключает отображение затраченного времени для каждого SQL-запроса. Она полезна для быстрых сравнений при настройке запроса, хотя для получения реального плана выполнения следует использовать EXPLAIN (ANALYZE, BUFFERS).
Пример (Включить тайминг):
\timing onТеперь каждый выполняемый запрос будет сопровождаться временем его выполнения.
Пример (Выключить тайминг):
\timing off
Форматирование вывода (\a, \H, \t)
\a: Переключает между выровненным (табличным) и невыровненным (CSV-подобным) выводом. Невыровненный вывод часто легче обрабатывать программно.\a SELECT * FROM products;\H: Переключает формат вывода на HTML.\H SELECT * FROM products;\t: Переключает отображение заголовков столбцов и нижнего колонтитула с количеством строк. Это полезно, когда вам нужен вывод, который легче передать в другую команду.\t SELECT name, price FROM products;
Постраничный вывод (\pset pager)
Если результаты вашего запроса длинные, psql может использовать постраничный вывод, такой как less, в зависимости от вашего окружения и настроек. Управляйте этим поведением с помощью \pset pager.
Пример (Использовать постраничный вывод для длинного вывода):
\pset pager onПример (Отключить постраничный вывод):
\pset pager off
Административные мета-команды
Помимо просмотра и контроля вывода, psql предоставляет команды для общих административных задач.
Вывод списка баз данных (\l)
Чтобы увидеть все доступные базы данных на подключенном сервере PostgreSQL, используйте \l.
- Пример:
\l
Подключение к другой базе данных (\c)
Если вы уже подключены к сеансу psql и хотите переключиться на другую базу данных, используйте команду \c.
- Пример: Чтобы подключиться к базе данных
mydatabase:\c mydatabase
Выполнение \? для справки
Если вы сомневаетесь, psql предоставляет свою собственную справочную систему. Команда \? выводит список всех доступных мета-команд, а \! позволяет выполнять команды оболочки.
Пример (Список всех мета-команд):
\?Пример (Выполнение команды оболочки, например
ls):\! ls -l
Лучшие практики и советы
- Используйте псевдонимы оболочки для полных команд
psql: Псевдонимы оболочки не могут выполнять\dtвнутри уже открытого сеансаpsql, но они могут сократить типичные команды запуска. Например,alias pprod='psql "postgresql://[email protected]/prod"'. - Комбинируйте с SQL: Мета-команды не исключают SQL. Вы можете использовать их для быстрого просмотра схемы перед написанием оператора
SELECTили использовать\timingдля сравнения времени выполнения запросов. - Понимайте область действия: Помните, что мета-команды работают в контексте вашего текущего сеанса
psqlи подключения. Такие команды, как\c, изменят активную базу данных для этого сеанса. - Щедро используйте
\?: Встроенная справка является всеобъемлющей и отличным ресурсом, когда вам нужно вспомнить команду или открыть новые.
Вывод
Начните с \dt, \d, \dn, \l, \c, \timing, \pset pager и \?. Этих нескольких команд достаточно для большинства повседневных задач по просмотру и делают psql гораздо менее похожим на сырой SQL-промпт.