Odpowiedzi:
Aby wyświetlić listę wszystkich schematów, użyj standardu (ANSI) INFORMACJE_SCHEMA
select schema_name
from information_schema.schemata;
Więcej szczegółów w instrukcji
alternatywnie:
select nspname
from pg_catalog.pg_namespace;
Więcej szczegółów na temat pg_catalog w instrukcji
Korzystając z psql
wiersza polecenia, możesz wyświetlić wszystkie schematy za pomocą polecenia \dn
.
\dn
listy, w przeciwieństwie do tabel, które to \dt
listy?
\dt
wyświetla tabele dla schematu publicznego. Aby wyświetlić tabele wszystkich używanych schematów \dt *.*
i dla konkretnego zastosowania schematu \dt schema_name.*
.
Połącz się z komendą psql -> psql --u {nazwa_użytkownika} {DBName}, a następnie możesz wpisać poniższe polecenie, aby sprawdzić, ile schematów znajduje się w DB
DBName=# \dn
W przeciwnym razie możesz łatwo sprawdzić składnię, wykonując poniższe czynności:
Po podłączeniu DB naciśnij
DBName=# help
Otrzymasz następujące opcje:
Używasz psql, interfejsu wiersza poleceń PostgreSQL.
Wpisz: \ copyright dla warunków dystrybucji
\ h, aby uzyskać pomoc dotyczącą poleceń SQL
\? po pomoc z komendami psql
\ g lub zakończ średnikiem, aby wykonać zapytanie
\ q, aby wyjść
Następnie wciśnij
DBName=# \?
Wszystkie opcje otrzymasz bardzo łatwo.
Począwszy od Postgres 9.3, jedną sztuczką, której możesz użyć w postgres, aby uzyskać dokładną sql polecenia informacyjnego (takiego jak \ d, \ du, \ dp, itp.) W psql, jest użycie transakcji. Oto jak przebiega sztuczka. Otwórz jedną sesję postgres, a następnie wpisz polecenie:
begin;
\dn+
Podczas gdy transakcja nadal trwa, otwórz kolejną sesję postgres i przeprowadź kwerendę o działanie pg_stat_activity, aby uzyskać dokładną 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;
\set ECHO_HIDDEN on
psql -E