Включение 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-промпт.