Как перечислить все базы данных и таблицы с помощью psql?

Я пытаюсь изучить администрирование PostgreSQL и начал изучать, как использовать инструмент командной строки psql.

Когда я вхожу в систему с помощью psql --username = postgres, как мне перечислить все базы данных и таблицы?

Я пробовал \ d, d и dS +, но ничего не указано. Я создал две базы данных и несколько таблиц с pgAdmin III, поэтому я знаю, что они должны быть перечислены.

1019 голосов | спросил Jonas 17 FebruaryEurope/MoscowbThu, 17 Feb 2011 11:45:49 +0300000000amThu, 17 Feb 2011 11:45:49 +030011 2011, 11:45:49

7 ответов


1345

Обратите внимание на следующие команды:

  • \ list или \ l: список всех баз данных
  • \ dt: список всех таблиц в текущей базе данных

Вы никогда не увидите таблицы в других базах данных, эти таблицы не будут видны. Вы должны подключиться к правильной базе данных, чтобы увидеть ее таблицы (и другие объекты).

Для переключения баз данных:

\ connect database_name

См. руководство по psql .

ответил Frank Heikens 17 FebruaryEurope/MoscowbThu, 17 Feb 2011 12:36:35 +0300000000pmThu, 17 Feb 2011 12:36:35 +030011 2011, 12:36:35
282

Здесь перечислены базы данных:

SELECT datname FROM pg_database
WHERE datistemplate = false;

Здесь перечислены таблицы в текущей базе данных

SELECT table_schema, имя_таблицы
FROM information_schema.tables
ORDER BY table_schema, table_name;
ответил RolandoMySQLDBA 17 FebruaryEurope/MoscowbThu, 17 Feb 2011 21:30:24 +0300000000pmThu, 17 Feb 2011 21:30:24 +030011 2011, 21:30:24
98

В Postgresql эти команды терминала перечисляют доступные базы данных

el @ defiant $ /bin /psql -h localhost --username = pgadmin --list

Или более простая команда:

psql -U pgadmin -l

Эти команды печатают это на терминале:

Список баз данных
   Имя | Владелец | Кодировка | Составить | Ctype | Доступ к привилегии
----------- + ---------- + ---------- + ------------- + - ----------- + -----------------------
 kurz_prod | pgadmin | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 |
 pgadmin | pgadmin | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 |
 postgres | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 |
 template0 | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | = c /postgres +
           | | | | | Postgres = CTC /Postgres
 шаблон1 | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | = c /postgres +
           | | | | | Postgres = CTC /Postgres
(5 строк)

Это доступные базы данных.

В PSQL эти команды перечисляют доступные таблицы

Вы должны указать базу данных, прежде чем вы сможете перечислить таблицы в этой базе данных.

el @ defiant $ psql -U pgadmin -d kurz_prod

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

kurz_prod = #

Используйте команду \ d, чтобы показать все таблицы, представления и последовательности

kurz_prod = # \ d

Отпечатки:

Список отношений
Схемы | Имя | Тип | владелец
-------- + --------- + ---------- + ---------
общественные | mytable | стол | pgadmin
общественные | тестирование | последовательность | pgadmin
(2 строки)

Затем, чтобы выйти из терминала psql, введите \ q и нажмите клавишу ввода. Или Ctrl-D делает то же самое. Это таблицы в этой базе данных.

ответил Eric Leschinski 16 +04002012-10-16T18:51:13+04:00312012bEurope/MoscowTue, 16 Oct 2012 18:51:13 +0400 2012, 18:51:13
68

\ l также является сокращением для \ list. Существует довольно много команд косой черты, которые вы можете перечислить в psql, используя \? .

ответил Derek Arnold 17 FebruaryEurope/MoscowbThu, 17 Feb 2011 18:00:52 +0300000000pmThu, 17 Feb 2011 18:00:52 +030011 2011, 18:00:52
30

Чтобы получить дополнительную информацию о списке базы данных и таблиц, вы можете:

\ l + для отображения баз данных

Список баз данных
    Имя | Владелец | Кодировка | Составить | Ctype | Права доступа | Размер | Табличное пространство | Описание
------------ + ---------- + ---------- + ------------- + - ------------ + ----------------------- + --------- + --- --------- + ---------------------------------------- ----
 pgbench | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | | 29 МБ | pg_default |
 postgres | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | | 6073 kB | pg_default | база данных административных соединений по умолчанию
 slonmaster | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | | 1401 МБ | перемещение |
 slonslave | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | | 32 МБ | pg_default |
 template0 | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | = c /postgres + | 5785 kB | pg_default | немодифицированная пустая база данных
            | | | | | postgres = CTc /postgres | | |
 шаблон1 | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | = c /postgres + | 5985 kB | pg_default | шаблон по умолчанию для новых баз данных
            | | | | | postgres = CTc /postgres | | |
 тест | postgres | UTF8 | ru_US.UTF-8 | ru_US.UTF-8 | | 13 МБ | pg_default |
(7 строк)

и

\ d +, чтобы отобразить все таблицы в текущей схеме поиска в текущей базе данных.

test = # \ dn + --list схемы
                          Список схем
  Имя | Владелец | Права доступа | Описание
-------- + ---------- + ---------------------- + ------- -----------------
 общественные | postgres | Postgres = UC /Postgres + | стандартная общедоступная схема
        | | = UC /postgres |
схема1 | postgres | Postgres = UC /Postgres + |
        | | = UC /postgres |
(2 ряда)

test = # set search_path для schema1, public;
ЗАДАВАТЬ
test = # \ d +
                                  Список отношений
     Схемы | Имя | Тип | Владелец | Размер | Описание
    --------- + ----------------- + ------- + -------------- + ------------ + -------------
     общественные | all_units | стол | postgres | 0 байт |
     общественные | актив | стол | postgres | 16 kB |
     общественные | asset_attribute | стол | postgres | 8192 байт |
     общественные | питание | стол | postgres | 48 kB |
     общественные | name_log | стол | postgres | 8192 байт |
     общественные | наружный | стол | обычные | 0 байт |
     общественные | outable2 | стол | обычные | 0 байт |
     общественные | тест | стол | postgres | 16 kB |
     общественные | usr | стол | postgres | 5008 kB |
     схема1 | t1 | стол | postgres | 0 байт |
    (10 строк)
ответил Soni Harriz 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 15 Sep 2014 23:42:05 +0400 2014, 23:42:05
28

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

SELECT *
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
    AND table_schema = 'public'
ORDER BY table_type, имя_таблицы

Это даст вам список всех постоянных таблиц (как правило, таблицы, которые вы ищете). Вы можете получить только имена таблиц, если вы измените подстановочный символ * только для table_name. Публичный table_schema - это схема по умолчанию для большинства баз данных, если только администратор не установил новую схему.

ответил Larry W 29 42012vEurope/Moscow11bEurope/MoscowThu, 29 Nov 2012 21:44:51 +0400 2012, 21:44:51
18

Возможно, вы ввели таблицы в схему, которая не находится в вашем пути поиска, или по умолчанию, то есть public, и поэтому таблицы не будут отображаться с помощью \ dt. Если вы используете схему, называемую, скажем, данными, вы можете исправить это, запустив

alter database <databasename> set search_path = data, public;

Закройте и запустите psql, и теперь \ dt покажет вам таблицы в данных схемы.

ответил John Powell aka Barça 8 FebruaryEurope/MoscowbFri, 08 Feb 2013 19:49:26 +0400000000pmFri, 08 Feb 2013 19:49:26 +040013 2013, 19:49:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132