При использовании PostgreSQL v9.1, как перечислить все схемы с помощью SQL?
Я ожидал чего-то вроде:
SELECT something FROM pg_blah;
Чтобы перечислить все схемы, используйте (ANSI) стандарт INFORMATION_SCHEMA
select schema_name
from information_schema.schemata;
Более подробная информация в руководстве
альтернативно:
select nspname
from pg_catalog.pg_namespace;
Более подробно о pg_catalog в руководстве
Подключитесь к команде psql --> psql --u {userName} {DBName}, затем вы можете ввести следующую команду, чтобы проверить, сколько схем присутствует в БД
DBName=# \dn
В противном случае вы можете проверить синтаксис, выполнив следующие действия.
После подключения к БД нажмите
DBName=# help
Вы получите следующие варианты:
Вы используете psql, интерфейс командной строки для PostgreSQL.
Тип: \copyright для условий распространения \h для справки по командам SQL \? для справки по командам psql \g или завершить точкой с запятой для выполнения запроса \q для выхода
Затем нажмите
DBName=# \?
Вы получите все варианты очень легко.
Начиная с базы данных Postgres 9.3, один трюк вы можете использовать в Postgres, чтобы получить точный SQL информационного команду (например, \д \ду \ДП и т. д.) в psql с помощью операции. Здесь's, как прикол идет. Откройте один сеанс 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;