When using PostgreSQL v9.1, how do I list all of the schemas using SQL?
I was expecting something along the lines of:
SELECT something FROM pg_blah;
When using PostgreSQL v9.1, how do I list all of the schemas using SQL?
I was expecting something along the lines of:
SELECT something FROM pg_blah;
When using the psql command line, you may list all schema with command \dn.
To lists all schemas, use the (ANSI) standard INFORMATION_SCHEMA
select schema_name
from information_schema.schemata;
More details in the manual
alternatively:
select nspname
from pg_catalog.pg_namespace;
More details about pg_catalog in the manual
Connect to the psql with command psql --username={userName} {DBName} then you can type the below command to check how many schemas are present in the database:
DBName=# \dn
Else you can check the syntax by the below steps easily:
After connecting the the DB, type
DBName=# help
You will get the below options:
You are using psql, the command-line interface to PostgreSQL.
Type: \copyright for distribution terms
\h for help with SQL commands
? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
Then type
DBName=# \?
You will get all the options very easily.
psql --u login is wrong CLI attribute, you should use psql --username=login or psql -U login
– AntonioK
Aug 01 '23 at 07:27
Beginning On postgres 9.3, One trick you can use in postgres to get the exact sql of informational command (such as \d, \du, \dp, etc) in psql is by using a transaction. Here's how the trick goes. Open one postgres session, then type your command :
begin;
\dn+
While the transaction still running, open another postgres session, and query the pg_stat_activity and you can get the exact 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;
These list all schemas including system's in the current database:
\dnS
\dn *
These list all schemas including system's in the current database in detail:
\dnS+
\dn+ *
This lists all schemas excluding system's in the current database:
\dn
This lists all schemas excluding system's in the current database in detail:
\dn+
These also list all schemas including system's in the current database:
SELECT * FROM pg_namespace;
SELECT * FROM information_schema.schemata;
\dnlists, as opposed to tables that\dtlists? – Tommy Apr 29 '16 at 15:29\dtlists tables for public schema. To show tables of all schemas use\dt *.*and for a particular schema use\dt schema_name.*. – Serious Nov 22 '17 at 06:34