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


239

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

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

SELECT something FROM pg_blah;

Ответы:



250

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


Благодарю. Было бы неплохо, чтобы \ dn возвращал только схемы, но в этом случае я пишу приложение начальной загрузки, которое подключается с использованием libpq / libpqxx, поэтому у меня нет доступа к CLI.
Стефан

1
Что такое схемы, эти \dnсписки, в отличие от таблиц, которые \dtсписки?
Томми

8
@Tommy \dtперечисляет таблицы для общедоступной схемы. Чтобы показать таблицы всех схем использования \dt *.*и для конкретной схемы использования \dt schema_name.*.
Серьезное

@ Tommy, схемы - это пространства имен: у вас могут быть разные таблицы с одинаковыми именами в разных пространствах имен.
eppesuig

38

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

DBName=# \dn

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

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

    DBName=# help

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

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

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

DBName=# \?

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


9

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

begin;
\dn+

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

postgres=# select query from pg_stat_activity ;
                                 query                                 
-----------------------------------------------------------------------
 SELECT n.nspname AS "Name",                                          +
   pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner",                 +
   pg_catalog.array_to_string(n.nspacl, E'\n') AS "Access privileges",+
   pg_catalog.obj_description(n.oid, 'pg_namespace') AS "Description" +
 FROM pg_catalog.pg_namespace n                                       +
 WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'      +
 ORDER BY 1;

12
Вам не нужно обманывать это; просто беги\set ECHO_HIDDEN on
Ник Барнс

8
или запустите это какpsql -E
Эван Кэрролл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.