Использование стандартной утилиты PostgreSQL — psql для подключения к ADPG

Для подключения к ADPG можно использовать стандартное клиентское приложение PostgreSQL — psql. Это интерактивный терминал, который позволяет выполнять SQL-запросы из командной строки и из SQL-файлов и просматривать их результаты. Утилита psql доступна на каждой ноде кластера ADPG.

Чтобы начать работу с psql, выполните следующие команды:

$ sudo su - postgres
$ psql

Первая команда переключает терминал в режим работы с правами доступа для пользователя postgres. Вторая — запускает psql для базы данных по умолчанию (postgres).

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

Опции psql
Опция Описание

-d <имя_базы_данных>

--dbname=<имя_базы_данных>

Задает имя базы данных для подключения

-h <имя_хоста>

--host=<имя_хоста>

Определяет имя хоста, на котором расположен сервер

-p <порт>

--port=<порт>

Определяет TCP-порт, через который сервер принимает подключения. Значение по умолчанию — 5432

-U <имя_пользователя>

--username=<имя_пользователя>

Задает пользователя, от имени которого произойдет подключение

Пример:

$ psql -h 10.92.6.36 -p 5432 -U user1 -d postgres
Рекомендация
Если у вас возникли проблемы с подключением, используйте утилиту pg_isready, чтобы проверить состояние подключения.

После выполнения команды psql терминал отображает приглашение psql с именем текущей базы данных и символом # в конце. Все последующие команды следует писать после #.

psql (14.3)
Type "help" for help.

postgres=#

Примеры выполнения SQL-запросов из командной строки вы можете найти в статье Пример работы с таблицами через psql.

Чтобы запустить SQL-запрос из файла, используйте метакоманду \i:

\i /путь/к/файлу/имя_файла.sql

Чтобы выйти из psql, используйте следующую команду:

\q

В таблице ниже перечислены некоторые полезные метакоманды.

Метакоманды psql
Команда Описание
\c <имя_БД>

Устанавливает соединение с определенной базой данных

\l

Выводит список всех баз данных на сервере и показывает их имена, владельцев, кодировку и права доступа

\dt

Выводит список всех таблиц в текущей базе данных

\dt+

Показывает список всех таблиц в текущей базе данных с их статусом хранения (permanent, temporary или unlogged), физическим размером на диске и описанием

\dn

Выводит список всех схем в текущей базе данных

\d+ <имя_таблицы>

Показывает детальную информацию о таблице

\dv

Выводит список всех представлений в текущей базе данных

\df

Показывает список функций с типами данных их результатов, аргументов и классификацией: agg (агрегатная), normal, (обычная), procedure (процедурная), trigger (триггерная) или window (оконная)

\x

Устанавливает режим развёрнутого вывода таблицы (expanded table formatting mode)

\du

Выводит список всех пользователей (ролей)

Метакоманды выполняют запросы к системным таблицам и представлениям, чтобы получить требуемую информацию. Можно просматривать эти запросы, присвоив переменной ECHO_HIDDEN значение on:

\set ECHO_HIDDEN on

Пример:

postgres=# \set ECHO_HIDDEN on
postgres=# \dt
********* QUERY **********
SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 't' THEN 'TOAST table' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type",
  pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
     LEFT JOIN pg_catalog.pg_am am ON am.oid = c.relam
WHERE c.relkind IN ('r','p','')
      AND n.nspname <> 'pg_catalog'
      AND n.nspname !~ '^pg_toast'
      AND n.nspname <> 'information_schema'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************

               List of relations
  Schema  |       Name       | Type  |  Owner
----------+------------------+-------+----------
 public   | author           | table | postgres
 public   | book             | table | postgres
 public   | us_gaz           | table | postgres
 public   | us_lex           | table | postgres
 public   | us_rules         | table | postgres
 public   | users            | table | postgres
(6 rows)

Чтобы отключить вывод запросов вместе с результатом метакоманды, присвойте переменной ECHO_HIDDEN значение off:

\set ECHO_HIDDEN off
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней