Как перечислить все схемы в PostgreSQL?
При использовании PostgreSQL v9.1, как мне перечислить все схемы с помощью SQL?
Я ожидал чего-то вроде:
ВЫБРАТЬ что-то из pg_blah;
4 ответа
Чтобы перечислить все схемы, используйте стандарт (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
При использовании командной строки psql
вы можете указать всю схему с помощью команды \ dn
.
Подключиться к команде psql -> psql --u {имя_пользователя} {DBName}, то вы можете ввести следующую команду, чтобы проверить, сколько схем присутствует в БД
DBName = # \ dn
Иначе вы можете легко проверить синтаксис с помощью следующих шагов:
-
После подключения БД нажмите
DBName = # help
Вы получите следующие параметры:
Вы используете psql, интерфейс командной строки для PostgreSQL.
Тип: \ copyright для условий распространения
\ h для помощи с командами SQL
\? для помощи с командами psql
\ g или завершение с помощью точки с запятой для выполнения запроса
\ q выйти
Затем нажмите
DBName = # \?
Вы легко получите все варианты.
Начало в 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;