Как перечислить все схемы в PostgreSQL?

При использовании PostgreSQL v9.1, как мне перечислить все схемы с помощью SQL?

Я ожидал чего-то вроде:

ВЫБРАТЬ что-то из pg_blah;
178 голосов | спросил Stéphane 15 PMpMon, 15 Apr 2013 23:19:16 +040019Monday 2013, 23:19:16

4 ответа


186

Чтобы перечислить все схемы, используйте стандарт (ANSI) INFORMATION_SCHEMA

выберите имя_схемы
from information_schema.schemata

Подробнее в руководстве: http://www.postgresql.org/docs/current /static/information-schema.html

в качестве альтернативы:

выберите nspname
из pg_catalog.pg_namespace;

Подробнее о pg_catalog в руководстве: http://www.postgresql.org/docs/current /static/catalogs.html

ответил a_horse_with_no_name 15 PMpMon, 15 Apr 2013 23:48:06 +040048Monday 2013, 23:48:06
190

При использовании командной строки psql вы можете указать всю схему с помощью команды \ dn.

ответил eppesuig 15 PMpMon, 15 Apr 2013 23:59:52 +040059Monday 2013, 23:59:52
30

Подключиться к команде psql -> psql --u {имя_пользователя} {DBName}, то вы можете ввести следующую команду, чтобы проверить, сколько схем присутствует в БД

DBName = # \ dn

Иначе вы можете легко проверить синтаксис с помощью следующих шагов:

  1. После подключения БД нажмите

    DBName = # help
    

Вы получите следующие параметры:

  

Вы используете psql, интерфейс командной строки для PostgreSQL.
  Тип: \ copyright для условий распространения
         \ h для помощи с командами SQL
         \? для помощи с командами psql
         \ g или завершение с помощью точки с запятой для выполнения запроса
         \ q выйти

Затем нажмите

DBName = # \?

Вы легко получите все варианты.

ответил Bhabatosh Bera 20 Jam1000000amMon, 20 Jan 2014 11:21:40 +040014 2014, 11:21:40
7

Начало в postgres 9.3. Один трюк, который вы можете использовать в postgres для получения точной sql информационной команды (например, \ d, \ du, \ dp и т. д.) в psql - с помощью транзакции. Вот как проходит трюк. Откройте один сеанс postgres, затем введите команду:

начать;
\ Дп +

Пока транзакция все еще запущена, откройте еще один сеанс postgres и запросите pg_stat_activity, и вы можете получить точный sql.

postgres = # выберите запрос из pg_stat_activity;
                                 запрос
-------------------------------------------------- ---------------------
 SELECT n.nspname AS "Name", +
   pg_catalog.pg_get_userbyid (n.nspowner) AS «Владелец», +
   pg_catalog.array_to_string (n.nspacl, E '\ n') AS «Права доступа», +
   pg_catalog.obj_description (n.oid, 'pg_namespace') AS "Описание" +
 FROM pg_catalog.pg_namespace n +
 WHERE n.nspname! ~ '^ Pg_' AND n.nspname <gt; 'information_schema' +
 ORDER BY 1;
ответил Soni Harriz 29 Jam1000000amFri, 29 Jan 2016 03:02:42 +030016 2016, 03:02:42

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

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

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