Как вывести список баз данных и таблиц PostgreSQL с помощью psql
При администрировании серверов баз данных PostgreSQL одной из наиболее распространенных задач, которые вы, вероятно, будете выполнять, будет перечисление баз данных и их таблиц.
PostgreSQL поставляется с интерактивным инструментом psql , который позволяет вам подключаться к серверу и выполнять запросы к нему. При использовании psql вы также можете воспользоваться его мета-командами. Эти команды полезны для написания сценариев и администрирования из командной строки. Все мета-команды начинаются с обратной косой черты без кавычек и также известны как команды с обратной косой чертой.
В этом руководстве объясняется, как отображать базы данных и таблицы на сервере PostgreSQL с помощью psql .
Листинг баз данных
Вы можете подключиться к серверу PostgreSQL с помощью команды psql как любой системный пользователь. В зависимости от конфигурации сервера пользователю может потребоваться ввести свой пароль для подключения к терминалу psql . Чтобы получить доступ к терминалу psql от имени пользователя, в который вы сейчас вошли, просто введите psql .
При установке пакета PostgreSQL создается административный пользователь с именем «postgres». По умолчанию этот пользователь может подключаться к локальному серверу PostgreSQL без пароля.
Чтобы получить доступ к терминалу psql от имени пользователя postgres, запустите:
sudo -u postgres psql
Команда sudo позволяет запускать команды от имени другого пользователя.
В терминале psql выполните мета-команду l или list вывести список всех баз данных:
Вывод будет включать количество баз данных, имя каждой базы данных, ее владельца, кодировку и права доступа:
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 .
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Как посмотреть все базы данных postgres
pg_amcheck [ параметр . ] [ имя_бд ]
Описание
Программа pg_amcheck поддерживает запуск реализованных в расширении amcheck функций, выявляющих повреждения, в одной или нескольких базах данных, с возможностью выбора проверяемых индексов, таблиц и схем. Она также позволяет выбрать, какие проверки будут выполняться, и запустить их в параллельном режиме (для которого задаётся число параллельных подключений).
В настоящее время поддерживаются только табличные отношения и индексы btree. Другие типы отношений просто пропускаются.
Если задаётся имя_бд , это должно быть имя одной проверяемой базы данных, а никакие другие параметры выбора базы данных задаваться не должны. Если же, напротив, присутствуют параметры выбора баз данных, будут проверяться все соответствующие базы. В отсутствие этих параметров проверяться будет только база по умолчанию. Параметрами, выбирающими базы, являются —all , —database и —exclude-database . Также в их число можно включить —relation , —exclude-relation , —table , —exclude-table , —index и —exclude-index , но только если их значения задаются тремя компонентами (например, mydb*.myschema*.myrel* ). И наконец, к таким параметрам можно отнести —schema и —exclude-schema , если их значения задаются двумя компонентами (например, mydb*.myschema* ).
В качестве параметра имя_бд может также передаваться строка подключения.
Параметры
Следующие параметры командной строки определяют, что будет проверяться:
Проверить все базы данных (кроме исключённых аргументом —exclude-database ). -d шаблон
—database= шаблон
Проверить базы данных, соответствующие заданному шаблону , кроме исключённых аргументом —exclude-database . Этот параметр можно добавлять неоднократно. -D шаблон
—exclude-database= шаблон
Исключить базы данных, соответствующие заданному шаблону . Этот параметр можно добавлять неоднократно. -i шаблон
—index= шаблон
Проверить индексы, соответствующие заданному шаблону , если они не исключены каким-либо образом. Этот параметр можно добавлять неоднократно.
Этот параметр подобен параметру —relation , но применяется только к индексам, а не таблицам. -I шаблон
—exclude-index= шаблон
Исключить индексы, соответствующие заданному шаблону . Этот параметр можно добавлять неоднократно.
Этот параметр подобен параметру —exclude-relation , но применяется только к индексам, а не таблицам. -r шаблон
—relation= шаблон
Проверить отношения, соответствующие заданному шаблону , если они не исключены каким-либо образом. Этот параметр можно добавлять неоднократно.
Шаблоны могут быть неполными, например myrel* , либо они могут задаваться с указанием схемы, например myschema*.myrel* , а также с указанием базы и схемы, например mydb*.myschema*.myrel* . В случае указания шаблона с базой данных, все соответствующие базы будут добавлены в список баз, подлежащих проверке. -R шаблон
—exclude-relation= шаблон
Исключить отношения, соответствующие заданному шаблону . Этот параметр можно добавлять неоднократно.
Как и с —relation , шаблон может быть неполным или дополненным указанием схемы, а также указанием базы и схемы. -s шаблон
—schema= шаблон
Проверить таблицы и индексы в схемах, соответствующих заданному шаблону , если соответствующие объекты не исключены каким-либо образом. Этот параметр можно добавлять неоднократно.
Чтобы проверить только таблицы в схемах, соответствующих определённому шаблону, можно указать в параметрах —table=ШАБЛОН_СХЕМЫ.* —no-dependent-indexes . Чтобы выбрать только индексы, можно воспользоваться указанием —index=ШАБЛОН_СХЕМЫ.* .
Шаблон схемы может содержать указание базы. Например, вы можете написать —schema=mydb*.myschema* , чтобы выбрать схемы myschema* в базах данных, соответствующих шаблону mydb* . -S шаблон
—exclude-schema= шаблон
Исключить таблицы и индексы в схемах, соответствующих заданному шаблону . Этот параметр можно добавлять неоднократно.
Как и в параметре —schema , к шаблону можно добавить имя базы данных. -t шаблон
—table= шаблон
Проверить таблицы в схемах, соответствующих заданному шаблону , если соответствующие объекты не исключены каким-либо образом. Этот параметр можно добавлять неоднократно.
Этот параметр подобен параметру —relation , но применяется только к таблицам, а не индексам. -T шаблон
—exclude-table= шаблон
Исключить таблицы, соответствующие заданному шаблону . Этот параметр можно добавлять неоднократно.
Этот параметр подобен параметру —exclude-relation , но применяется только к таблицам, а не индексам. —no-dependent-indexes
По умолчанию, если проверяется таблица, также будут проверяться все индексы btree этой таблицы, даже если они не были явно выбраны ключами типа —index или —relation . Данный параметр отключает это поведение. —no-dependent-toast
По умолчанию, если проверяется таблица, также будет проверяться её TOAST-таблица (если таковая имеется), даже если она не была явно выбрана ключами типа —table или —relation . Данный параметр отключает это поведение. —no-strict-names
По умолчанию, если аргументу —database , —table , —index или —relation не соответствуют никакие объекты, это считается критической ошибкой. С данным параметром уровень ошибки понижается до предупреждения.
Следующие параметры командной строки управляют методами проверки таблиц:
—exclude-toast-pointers
По умолчанию, когда в таблице встречается указатель на TOAST, осуществляется поиск записи в TOAST-таблице для проверки корректности указателя. Эти проверки могут быть довольно медленными, и данный параметр позволяет пропустить их. —on-error-stop
Прекращать обработку табличного отношения сразу после сообщения обо всех повреждениях на первой повреждённой странице и переходить к следующей таблице или индексу.
Заметьте, что проверка индекса всегда прекращается после обнаружения первой повреждённой страницы. Данный параметр имеет смысл только для табличных отношений. —skip= параметр
С указанием all-frozen проверки повреждений таблиц будут пропускать страницы, помеченные как полностью замороженные, во всех таблицах.
С указанием all-visible проверки повреждений таблиц будут пропускать страницы, помеченные как полностью видимые, во всех таблицах.
По умолчанию никакие страницы не пропускаются. Такое поведение задаётся значением none , но так как это значение подразумевается, явно задавать его не требуется. —startblock= блок
Начать проверку с блока с заданным номером. Если проверяемое табличное отношение содержит меньше заданного числа блоков, будет выдана ошибка. Данный параметр представляется полезным только для проверки одной конкретной таблицы, и он не действует на индексы. Дополнительные замечания приведены в описании —endblock . —endblock= блок
Завершить проверку на блоке с указанным номером. Если проверяемое табличное отношение содержит меньше заданного числа блоков, будет выдана ошибка. Данный параметр представляется полезным только для проверки одной конкретной таблицы, и он не действует на индексы. Если проверяется и обычная, и TOAST-таблица, этот параметр действует на обе, но при проверке TOAST-указателей тем не менее возможны обращения к блокам за этим пределом, если только эта проверка не была выключена параметром —exclude-toast-pointers .
Следующие параметры командной строки управляют методами проверки индексов-B-деревьев:
—heapallindexed
Проверять для каждого обрабатываемого индекса наличие всех кортежей кучи в виде индексных кортежей с использованием режима heapallindexed проверки amcheck. —parent-check
Выполнять для каждого проверяемого индекса btree функцию amcheck bt_index_parent_check , проводящую дополнительные проверки связей родитель-потомок.
По умолчанию выполняется функция amcheck bt_index_check , но заметьте, что в случае использования параметра —rootdescend неявно выбирается функция bt_index_parent_check . —rootdescend
При проверке каждого индекса для каждого кортежа заново находить индексные кортежи на уровне листьев, производя поиск с корневой страницы, то есть задействовать режим amcheck rootdescend .
При использовании данного параметра также неявно включается параметр —parent-check .
Этот режим проверки изначально реализовывался как средство, полезное при разработке функциональности индексов-B-деревьев. Он может обнаруживать не все или вовсе не обнаруживать те типы повреждений, которые встречаются на практике. Также в этом режиме проверка выполняется значительно дольше и для неё требуется больше серверных ресурсов.
Предупреждение
Дополнительные проверки, выполняемые для индексов-B-деревьев, когда указан параметр —parent-check или параметр —rootdescend , требуют относительно сильных блокировок на уровне отношений. Только эти проверки блокируют одновременное изменение данных командами INSERT , UPDATE и DELETE .
Следующие параметры командной строки управляют подключением к серверу:
-h компьютер
—host= компьютер
Указывает имя компьютера, на котором работает сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета. -p порт
—port= порт
Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения. -U
—username= имя_пользователя
Имя пользователя для подключения. -w
—no-password
Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл .pgpass , попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль. -W
—password
Принудительно запрашивать пароль перед подключением к базе данных.
Это несущественный параметр, так как pg_amcheck запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако чтобы понять это, pg_amcheck лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести -W , чтобы исключить эту ненужную попытку подключения. —maintenance-db= имя_бд
Задаёт базу данных или строку подключения для установления подключения, через которое будет определяться список баз данных для проверки. Если не используются ни ключ —all , ни параметры, задающие шаблон имён проверяемых баз данных, такое подключение не требуется и данный параметр игнорируется. Иначе все параметры из переданной строки, за исключением имени базы данных, будут также использоваться при подключении к проверяемым базам. Если этот параметр опущен, выполняется подключение к базе postgres , а если к ней подключиться не удаётся — к базе template1 .
Выводить в stdout все SQL-запросы, передаваемые серверу. -j число
—jobs= число
Использовать заданное число одновременных подключений к серверу, а если оно превышает количество объектов, число подключений ограничивается этим количеством.
По умолчанию используется одно подключение. -P
—progress
Выводить информацию о прогрессе операции. Выводимая информация включает количество отношений, для которых была проведена проверка, и общий размер этих отношений. В неё также включается общее количество отношений, которые должны быть проверены, и примерный размер этих отношений. -v
—verbose
Выводить больше сообщений. В частности, будут выводиться сообщения о проверке каждого отношения, а также увеличится уровень детализации ошибок сервера. -V
—version
Вывести версию pg_amcheck и завершиться. —install-missing
—install-missing= схема
Установить все отсутствующие расширения, которые требуются для проверки баз(ы) данных. Если это расширение не было установлено, его объекты будут помещены в заданную схему или, если она не задана, в схему pg_catalog .
В настоящее время для работы pg_amcheck требуется только расширение amcheck. -?
—help
Вывести справку об аргументах командной строки pg_amcheck и завершиться.
Замечания
Программа pg_amcheck предназначена для работы с PostgreSQL 14.0 и выше.
Просмотр списка баз и таблиц из командной строки в PostgreSQL
Для просмотра списков баз данных и таблиц в них команды следующие:
- \list или \l: вывести список всех баз данных
- \dt: вывести список всех таблиц в текущей базе
В других базах таблицы увидеть не удастся, пока не поменяем текущую.
Для смены базы данных:
\connect database_name
Здесь мануал по psql.
Об авторе admin
Инженер-программист, системный администратор
Вывести все базы/таблицы в PostgreSQL


Эта статья «Вывести все базы/таблицы в PostgreSQL» поможет показать вам список всех баз данных и таблиц в PostgreSQL. Для начала, войти в PostgreSQL с помощью команды PSQL и выполнить следующую команду из командной строки PostgreSQL.
Вывести все базы в PostgreSQL
Вы можете использовать любую из перечисленных команд что ниже, чтобы вывести список всех баз данных в PostgreSQL:
postgres=# \list
postgres=# \l
Вывести все таблицы в PostgreSQL
Чтобы просмотреть список таблиц в любой базе данных, сначала необходимо подключиться к этой БД, а затем выполнить команду для просмотра таблиц. Первая команда подключит вас к БД (например: your_DB) в которой вы хотите увидеть таблицы и вторая команда покажет их:
postgres=# \connect your_DB your_DB=# \dt
На этом все, я завершил свою тему «Вывести все базы/таблицы в PostgreSQL».