Как посмотреть все таблицы в postgresql
Перейти к содержимому

Как посмотреть все таблицы в postgresql

  • автор:

Как вывести список баз данных и таблиц 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.

Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как в PostgreSQL вывести все названия таблиц и определенные столбцы из каждой?

Подскажите, не знаю как выполнить SQL запрос так, чтобы я обратился ко всем таблицам в схеме, выбрал оттуда значения определенных столбцов и затем записал бы в переменную в виде: 1)table_name-column
2)table_name-column

  • Вопрос задан более года назад
  • 973 просмотра

Комментировать
Решения вопроса 1

iMedved2009

Дмитрий @iMedved2009
Не люблю людей

SELECT table_name, column_name FROM information_schema.columns WHERE table_catalog = 'имя базы' and table_schema = 'public' order by table_name;

Ответ написан более года назад
Комментировать
Нравится Комментировать
Ответы на вопрос 2

ivandest

Нужные Вам данные хранятся здесь information_schema.columns. Запрос довольно простой: поиск по схеме и объединение двух колонок.

Ответ написан более года назад
Комментировать
Нравится Комментировать

mayton2019

mayton2019 @mayton2019
Bigdata Engineer

Сбор мета-данных по БД — это та часть SQL которая не урегулирована стандартом. И каждый вендор БД делают свои имена справочников таблиц. У Постгреса это будет information_schema.columns у Oracle — ALL_TAB_COLUMNS и т.д.

Среди CLI инструментов тоже нет единого видения как собирать данные о схеме. Разные команды листинга.

Единственную попытку стандартизировать я видел в семействе Java JDBC драйверов. Там с помощью интерфейсов DatabaseMetaData, ResultSet и Connection программист может собрать мету о таблицах.

Получить список таблиц конкретной базы данных postgres?

Есть несколько баз, нужно для конкретной базы (по имени) вывести все таблицы. Помогите, пожалуйста, составить запрос.

  • Вопрос задан более трёх лет назад
  • 3387 просмотров

Комментировать

Решения вопроса 0

Ответы на вопрос 1

smagen

Руководитель разработки Postgres Professional

Вот такой запрос выведет список имен таблиц (а также имен схем, где они расположены) для текущей БД.

SELECT n.nspname, c.relname FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind = 'r' AND n.nspname NOT IN('pg_catalog', 'information_schema');

Посмотреть список таблиц другой БД (не той, к которой подключен) – нельзя. Нужно подключаться к каждой БД отдельно.

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

Как посмотреть структуру таблицы sql

Можно посмотреть колонки таблицы и тип данных через, например, pgAdmin .

Также через psql можно выполнить запрос вида:

SELECT column_name, column_default, data_type FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'super_table'; 

Этот запрос вернёт название колонки, её значение по умолчанию, а также тип данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *