Перечисление и переключение баз данных в PostgreSQL

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

1. Предварительные условия

Прежде чем приступить к работе, убедитесь, что:

  • PostgreSQL установлен в вашей системе( доступенpsql ).

  • У вас есть соответствующие права (например, суперпользователь или роль с правами на подключение).

  • Вы можете аутентифицироваться на сервере PostgreSQL с помощью действительного пользователя.

2. Листинг баз данных в PostgreSQL

🔍 Метод 1: Использование метакоманды psql

Запустите интерактивный терминал psql и выполните команду:

\l

Или в расширенном виде:

\list

Это вернет список всех баз данных:

  • Name

  • Owner

  • Encoding

  • Collation

  • Ctype

  • Access privileges

Метод 2: Использование SQL-запроса

В качестве альтернативы выполните этот SQL-запрос:

SELECT datname FROM pg_database WHERE datistemplate = false;

Этот запрос исключает шаблонные базы данных (template0, template1) и показывает базы данных, созданные пользователем.

🛠️ Метод 3: оболочка командной строки

За пределами psql, из терминала:

psql -U postgres -c "\l"

Вы также можете использовать команду psql -l:

psql -l

3. Переключение баз данных

В отличие от некоторых других СУБД (например, MySQL), PostgreSQL не поддерживает переключение баз данных в рамках одной сессии с помощью команды типа USE dbname;.

Почему?

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

Рекомендуемый подход:

Выйти из текущей сессии и заново подключиться к нужной базе данных:

\q -- Выйти из текущей сессии psql

Затем:

psql -U username -d target_database

Или напрямую:

psql -U username -d target_database -h hostname -p port

Пример:

psql -U admin -d salesdb

4. Советы по эффективной работе с несколькими базами данных

a. Используйте .pgpass для беспарольного переключения

Создайте файл .pgpass для автоматизации аутентификации:

hostname:port:database:username:password

Убедитесь, что он имеет правильные права доступа:

chmod 600 ~/.pgpass

b. Автоматизация с помощью сценариев оболочки

Создайте скрипт для перечисления и переключения:

#!/bin/bash
echo "Available Databases:"
psql -U postgres -c "\l"
read -p "Enter target DB: " db
psql -U postgres -d "$db"

c. Использование переменных окружения

Экспортируйте БД и пользователя по умолчанию для более быстрого переключения:

export PGDATABASE=mydb
export PGUSER=myuser
psql

5. Работа с PgAdmin и другими графическими интерфейсами

В PgAdmin:

  1. Нажмите на группу серверов.

  2. Щелкните правой кнопкой мыши → Подключиться к базе данных.

  3. Используйте выпадающий список Query Tool для переключения баз данных (создается новая вкладка для каждой базы данных).

Многие инструменты (DBeaver, DataGrip) позволяют использовать несколько соединений с вкладками для просмотра баз данных.

6. Бонус: проверка текущей базы данных

В psql найдите текущую базу данных:

SELECT current_database();

Или используйте:

\conninfo

Заключение

Хотя PostgreSQL не позволяет переключаться между базами данных в сеансе, как некоторые другие SQL-движки, его надежная модель соединений обеспечивает чистый, последовательный контроль доступа и управление ресурсами. Освоив технику перечисления и приняв разумные методы переподключения, вы сможете эффективно управлять базами данных PostgreSQL и переключаться между ними в любой среде – с помощью CLI, графического интерфейса или сценариев.