Dealing with schema in psql utility?

Started by Dan Delaneyabout 23 years ago4 messagesgeneral
Jump to latest
#1Dan Delaney
ddelaney@powercreative.com

Hello all.

In the psql utility, how can I:
1) get a list of the schema that have been created in the current
database
2) View the list of tables in a schema other than "public"?
3) Rename a schema (is there an "alter schema" statement)?

I can't seem to find any way to actually see a list of the schemas that
I've created. And when I create a table in another schema with "create
schemaname.tablename (...)" it doesn't show up in the list of tables
for the database (\d), even though the list has a "schema" column,
which I presumed meant that it would show all of the objects in all
schemas in the database (wrong).

--Dan

#2Tariq Muhammad
tmuhamma@libertyrms.com
In reply to: Dan Delaney (#1)
Re: Dealing with schema in psql utility?

On Thu, 20 Feb 2003, Dan Delaney wrote:

1) get a list of the schema that have been created in the current
database

select * from pg_namespace ;

2) View the list of tables in a schema other than "public"?

Fist get the oid of the schema that you want to get the table list for :

select oid from pg_namespace where nspname = 'schema_name';

then

select relname from pg_class where relnamespace = oid; ## above oid.

3) Rename a schema (is there an "alter schema" statement)?

You can do it as superuser

update pg_namespace set nspname='new_schema_name' where
nspname='schema_name';

_/_/ _/_/ _/_/ Tariq Muhammad
_/ _/ _/ _/ _/ _/ tariq@libertyrms.info
_/ _/ _/_/_/ _/_/_/ v:416-646-3304 x 111
_/ _/ _/ _/ _/ _/ c:416-455-0272
_/_/_/ _/_/_/ _/ _/ p:416-381-1457
_________________________________________________
Liberty Registry Management Services Co.

#3Dan Delaney
ddelaney@powercreative.com
In reply to: Tariq Muhammad (#2)
Re: Dealing with schema in psql utility?

On Thursday, February 20, 2003, at 02:23 PM, Tariq Muhammad wrote:

select * from pg_namespace ;
Fist get the oid of the schema that you want to get the table list for
:
select oid from pg_namespace where nspname = 'schema_name';
select relname from pg_class where relnamespace = oid; ## above oid.
update pg_namespace set nspname='new_schema_name' where
nspname='schema_name';

You've got to be kidding ;-)

Seriously though, isn't the purpose of schemas to make organization of
tables more convenient? It seems like dealing with schemas is a big
hassle. It'd be nice to have something like "\d", except for schemas,
to list the schemas that you've created, and an "alter schema"
statement to modify them.

--Dan

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tariq Muhammad (#2)
Re: Dealing with schema in psql utility?

Tariq Muhammad <tmuhamma@libertyrms.com> writes:

On Thu, 20 Feb 2003, Dan Delaney wrote:

1) get a list of the schema that have been created in the current
database

select * from pg_namespace ;

7.4 psql will also offer "\dn". We didn't get around to making this
happen for 7.3.

2) View the list of tables in a schema other than "public"?

Try "\dt myschema.*"

3) Rename a schema (is there an "alter schema" statement)?

On the to-do list, but not done yet. As Tariq says, an ALTER command
will serve for the moment.

regards, tom lane