Введение
При администрировании серверов баз данных PostgreSQL одной из наиболее распространенных задач, которые, вероятно, будут выполняться, является перечисление баз данных и их таблиц.
PostgreSQL поставляется с интерактивным инструментом под названием psql, который позволяет вам подключаться к серверу и запрашивать его. При использовании psql вы также можете использовать его метакоманды. Эти команды полезны для сценариев и администрирования командной строки. Все метакоманды начинаются с обратной косой черты без кавычек, \ также известны как команды обратной косой черты.
В этом руководстве объясняется, как отображать базы данных и таблицы на сервере PostgreSQL с помощью psql.
Предпосылки
Чтобы следовать этому руководству, вам понадобятся:
- PostgreSQL корректно установлен на вашем сервере/рабочем столе. Приведенные ниже команды должны работать в большинстве дистрибутивов Linux. Чтобы установить PostgreSQL на Ubuntu 18.04, прочитайте это руководство. Чтобы установить PostgreSQL на Debian 10, прочтите это руководство.
Список баз данных
Вы можете подключиться к серверу PostgreSQL с помощью команды psql от имени любого пользователя в системе. В зависимости от конфигурации сервера пользователю может потребоваться ввести пароль для подключения к терминалу psql. Чтобы войти в терминал psql как текущий пользователь, просто введите psql.
Когда пакет PostgreSQL установлен, создается пользователь-администратор с именем « postgres ». По умолчанию этот пользователь может подключаться к локальному серверу PostgreSQL без пароля.
Чтобы войти в терминал psql как пользователь " postgres ", запустите:
sudo -u postgres psql
В терминале psql запустите метакоманду \l или \list, чтобы получить список всех баз данных:
\l
Вывод будет включать номер базы данных, имя каждой базы данных, ее владельца, кодировку и права доступа:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
Сервер PostgreSQL имеет три базы данных, созданные по умолчанию: template0, template1 и postgres. Первые два — это шаблоны, которые используются при создании новых баз данных.
Если вы хотите получить больше информации о базе данных, такой как размеры и описания, используйте одну из этих двух команд \ l + или \ list +. Размер базы данных будет отображаться только в том случае, если текущий пользователь может к ней подключиться.
Другой способ перечислить базы данных — использовать следующую инструкцию SQL:
SELECT datname FROM pg_database;
В отличие от метакоманды \l, приведенная выше команда запрашивает только имена баз данных:
datname
-----------
postgres
odoo
template1
template0
(4 rows)
Чтобы получить список всех баз данных без доступа к оболочке psql, используйте параметр -c, как показано ниже (если вы уже вошли в оболочку psql, введите exit ):
sudo -u postgres psql -c "\l"
Список таблиц базы данных
Чтобы просмотреть все таблицы конкретной базы данных, вам нужно подключиться к ней с помощью метакоманды \c или \connect. Пользователь, вошедший в терминал psql, должен иметь возможность подключения к базе данных.
Повторно подключитесь к оболочке psql, если вы больше не вошли в систему:
sudo -u postgres psql
Чтобы подключиться к базе данных с именем « template1 », введите:
\c template1
После изменения базы данных используйте метакоманду \dt, чтобы вывести список всех таблиц в базе данных. Вывод будет включать количество таблиц, имя каждой таблицы и ее схему, тип и владельца.
Если база данных пуста, вывод будет выглядеть так:
No relations found.
Чтобы получить информацию о размерах таблиц и описаниях использования, используйте метакоманду \dt+.
Вывод
Мы увидели, как составить список баз данных и таблиц PostgreSQL с помощью команды psql.