DevGang
Авторизоваться

Основные команды psql с примерами

PostgreSQL, часто называемый просто Postgres, представляет собой бесплатную систему управления реляционными базами данных (СУБД) с открытым исходным кодом, известную своей надежностью, функциональностью и производительностью. Она активно разрабатывается уже более 35 лет и считается одной из самых передовых доступных СУБД с открытым исходным кодом.

psql является официальным клиентом CLI для управления базой данных PostgreSQL. Он поддерживает интерактивное и неинтерактивное использование.

Ниже перечислены 10 наиболее часто используемых psql команд с примерами.

1. Подключитесь к базе данных

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

psql

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

psql -U your_username

Если сервер PostgreSQL работает на порту, отличном от порта по умолчанию (5432), вы можете подключиться к базе данных с помощью следующей команды. Вам будет предложено ввести пароль для указанного пользователя.

psql -p 5433

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

psql -h remote_host -p 5432

Во всех этих примерах вы также можете указать имя базы данных, к которой хотите подключиться, используя эту -d опцию. Например, чтобы подключиться к базе данных с именем my_database, вы должны использовать следующую команду:

2. Запустите одну команду: -c

Чтобы запустить одну команду в PostgreSQL с использованием psql интерфейса командной строки, вы можете использовать -c параметр, за которым следует команда SQL, которую вы хотите выполнить.

psql -d my_database -c "SELECT * FROM my_table;"

3. Список доступных баз данных: \l

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

postgres-# \l

   Name    |  Owner   | Encoding | Locale Provider |  Collate   |   Ctype    | ICU Locale | ICU Rules |   Access privileges
-----------+----------+----------+-----------------+------------+------------+------------+-----------+-----------------------
 postgres  | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           |
 template0 | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | =c/postgres          +
           |          |          |                 |            |            |            |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | =c/postgres          +
           |          |          |                 |            |            |            |           | postgres=CTc/postgres
(3 rows)

4. Переключиться на указанную базу данных: \c

Команда \c переключается на указанную базу данных. Это полезно для работы с конкретной базой данных после того, как вы перечислили доступные базы данных.

postgres-# \c postgres

psql (16.0, server 16.1 (Debian 16.1-1.pgdg120+1))
You are now connected to database "postgres" as user "postgres".

5. Список таблиц: \dt

Команда \dt выводит список всех таблиц, доступных на данный момент в текущей базе данных. Это может быть полезно для получения обзора таблиц, доступных вам в текущей базе данных.

postgres-# \dt

List of relations
Schema | Name | Type | Owner
-------+---------+-------+--------
public | mytable | table | postgres
public | users | table | postgres
public | orders | table | postgres

6. Опишите указанную таблицу: \d

Команда \d описывает указанную таблицу. Это предоставляет информацию о столбцах таблицы, типах данных и ограничениях.

postgres-# \d my_table

Table: my_table

Column | Data Type | Constraints
-------+------------+-------------------
id | SERIAL | PRIMARY KEY
name | VARCHAR(50) | NOT NULL
email | VARCHAR(100) | UNIQUE

7. Список пользователей: \du

Команда \du выводит список всех пользователей, существующих в текущей базе данных.

postgres-# \du

List of roles
Role name | Attributes
---------+------------
postgres | SUPERUSER, CREATEDB, CREATEROLE, INHERIT, REPLICATION
myuser | CREATEDB

Команда \du username используется для вывода списка ролей (пользователей) в текущей базе данных, имеющих указанное имя пользователя.

postgres-# \du myuser

List of roles
Role name | Attributes
---------+------------
myuser | CREATEDB

Если указанное имя пользователя не соответствует ни одной роли в текущей базе данных, на выходе будет пустая таблица.

postgres-# \du youruser

List of roles
Role name | Attributes
---------+------------
 |

8. Показать соединения: pg_stat_activity

Чтобы просмотреть все активные соединения, выполните следующий SQL-запрос.

postgres-# SELECT * FROM pg_stat_activity;

pid | datname | username | client_addr | client_port | backend_start | query_start | query | state
-------+---------+---------+-------------+-------------+---------------+---------------+-----------------+----------
1234 | mydb1   | postgres | 192.168.1.100 | 5432 | 2023-10-04 15:04:00 | 2023-10-04 15:04:05 | SELECT * FROM mytable; | active
5678 | mydb2   | user1    | 192.168.1.101 | 5432 | 2023-10-04 15:05:00 | 2023-10-04 15:05:03 | UPDATE mytable SET name = 'John Doe' WHERE id = 123; | idle in transaction
9012 | postgres | 192.168.1.102 | 5432 | 2023-10-04 15:06:00 |                |                | idle |

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

postgres-# SELECT * FROM pg_stat_activity WHERE datname = 'mydb' AND state = 'active';

Аналогично, чтобы получить список соединений, выполняющих запросы в данный момент, используйте следующий запрос:

postgres-# SELECT * FROM pg_stat_activity WHERE state IN ('active', 'idle in transaction');

9. Уничтожить соединение: pg_terminate_backend(), kill

После того, как вы определили PID соединения, которое хотите разорвать, вы можете использовать эту pg_terminate_backend() функцию для его завершения. Например, следующая команда разорвет соединение с PID 1234:

postgres-# SELECT pg_terminate_backend(1234);

Использование команды kill — менее распространенный метод уничтожения соединений PostgreSQL, поскольку он может быть более опасным и менее надежным, чем использование функции pg_terminate_backend(). Однако это может быть необходимо в определенных ситуациях, например, когда соединение не отвечает или функция pg_terminate_backend() дает сбой.

kill -9 1234

10. Выйти: \q, Ctrl+D, Ctrl+Z

С помощью \q команды или сочетания клавиш Ctrl+D (или Ctrl+Z в Windows). Это немедленно приведет к выходу из интерфейса командной строки psql.

\q

Источник:

#PostgreSQL
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу