При администрировании серверов баз данных PostgreSQL одной из наиболее распространенных задач, которые вы, вероятно, будете выполнять, будет перечисление баз данных и их таблиц.
PostgreSQL поставляется с интерактивным инструментом psql
, который позволяет вам подключаться к серверу и выполнять запросы к нему. При использовании psql
вы также можете воспользоваться его мета-командами. Эти команды полезны для написания сценариев и администрирования из командной строки. Все мета-команды начинаются с обратной косой черты без кавычек и также известны как команды с обратной косой чертой.
В этом руководстве объясняется, как отображать базы данных и таблицы на сервере PostgreSQL с помощью psql
.
Содержание
Листинг баз данных
Вы можете подключиться к серверу PostgreSQL с помощью команды psql
как любой системный пользователь. В зависимости от конфигурации сервера пользователю может потребоваться ввести свой пароль для подключения к терминалу psql
. Чтобы получить доступ к терминалу psql
от имени пользователя, в который вы сейчас вошли, просто введите psql
.
При установке пакета PostgreSQL создается административный пользователь с именем «postgres». По умолчанию этот пользователь может подключаться к локальному серверу PostgreSQL без пароля.
Чтобы получить доступ к терминалу psql
от имени пользователя postgres, запустите:
sudo -u postgres psql
sudo
позволяет запускать команды от имени другого пользователя.В терминале psql выполните мета-команду l
или list
вывести список всех баз данных:
l
Вывод будет включать количество баз данных, имя каждой базы данных, ее владельца, кодировку и права доступа:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+---------+-----------------------
odoo | odoo | UTF8 | C | C.UTF-8 |
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
На сервере PostgreSQL по умолчанию созданы три базы данных: template0, template1 и postgres. Первые два — это шаблоны, которые используются при создании новых баз данных.
Если вы хотите получить информацию о размерах баз данных, табличных пространствах по умолчанию и описаниях, используйте l+
или list+
. Размер базы данных отображается только в том случае, если текущий пользователь может к ней подключиться.
Чтобы получить список всех баз данных без доступа к оболочке psql, используйте переключатель -c
как показано ниже:
sudo -u postgres psql -c "l"
Другой способ составить список баз данных — использовать следующий оператор SQL:
SELECT datname FROM pg_database;
В отличие от мета-команды l
приведенный выше запрос покажет только имена баз данных:
datname
-----------
postgres
odoo
template1
template0
(4 rows)
Листинговые таблицы
Чтобы сначала вывести список всех таблиц конкретной базы данных, вам необходимо подключиться к ней с помощью c
или connect
. Пользователь, в который вы вошли в терминал psql, должен иметь возможность подключаться к базе данных.
Например, чтобы подключиться к базе данных с именем «odoo», введите:
c odoo
После переключения базы данных используйте мета-команду dt
вывести список всех таблиц базы данных:
Вывод будет включать количество таблиц, имя каждой таблицы, ее схему, тип и владельца:
List of relations
Schema | Name | Type | Owner
--------+-----------------------------------------------------+-------+-------
public | base_import_import | table | odoo
public | base_import_mapping | table | odoo
public | base_import_tests_models_char | table | odoo
...
public | web_editor_converter_test_sub | table | odoo
public | web_tour_tour | table | odoo
public | wizard_ir_model_menu_create | table | odoo
(107 rows)
Если база данных пуста, вывод будет выглядеть так:
No relations found.
Чтобы получить информацию о размерах таблиц и описаниях, используйте dt+
.
Выводы
Вы узнали, как составить список баз данных и таблиц PostgreSQL с помощью команды psql
.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Коряво написанная статья идиотом.