Использование стандартной утилиты PostgreSQL — psql для подключения к ADPG
Для подключения к ADPG можно использовать стандартное клиентское приложение PostgreSQL — psql. Это интерактивный терминал, который позволяет выполнять SQL-запросы из командной строки и из SQL-файлов и просматривать их результаты. Утилита psql
доступна на каждой ноде кластера ADPG.
Чтобы начать работу с psql
, выполните следующие команды:
$ sudo su - postgres
$ psql
Первая команда переключает терминал в режим работы с правами доступа для пользователя postgres
. Вторая — запускает psql
для базы данных по умолчанию (postgres
).
Вы также можете использовать опции psql
из таблицы ниже, чтобы задать базу данных, пользователя, хост и порт для подключения вместо значений по умолчанию.
Опция | Описание |
---|---|
-d <имя_базы_данных> --dbname=<имя_базы_данных> |
Задает имя базы данных для подключения |
-h <имя_хоста> --host=<имя_хоста> |
Определяет имя хоста, на котором расположен сервер |
-p <порт> --port=<порт> |
Определяет TCP-порт, через который сервер принимает подключения. Значение по умолчанию — |
-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
В таблице ниже перечислены некоторые полезные метакоманды.
Команда | Описание |
---|---|
|
Устанавливает соединение с определенной базой данных |
|
Выводит список всех баз данных на сервере и показывает их имена, владельцев, кодировку и права доступа |
|
Выводит список всех таблиц в текущей базе данных |
|
Показывает список всех таблиц в текущей базе данных с их статусом хранения ( |
|
Выводит список всех схем в текущей базе данных |
|
Показывает детальную информацию о таблице |
|
Выводит список всех представлений в текущей базе данных |
|
Показывает список функций с типами данных их результатов, аргументов и классификацией: |
|
Устанавливает режим развернутого вывода таблицы (expanded table formatting mode) |
|
Выводит список всех пользователей (ролей) |
Метакоманды выполняют запросы к системным таблицам и представлениям, чтобы получить требуемую информацию. Можно просматривать эти запросы, присвоив переменной 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