wiki:CookBook Postgres Advanced Use

Version 8 (modified by cedric, 15 years ago) (diff)

--

Listing all tables within a dabase

C:\"Program Files"\PostgreSQL\8.4\bin\psql -d CCM_EDA -p 5433 -U postgres 
à l'invite de commande
\d
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN
'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
u.usename as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
select c.relname as tablename FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','') AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
AND pg_catalog.pg_table_is_visible(c.oid);

note : aucune de ces commandes ne fonctionne si la base n'est pas en UTF8 l'utilisation de pg_catalog ne semble pas compatible avec ANSI par exemple
Par contre

select * from information_schema.tables 

et

select table_name from information_schema.tables 
where table_schema not in ('pg_catalog','information_schema')
and table_type ='BASE TABLE'

fonctionnent dans la version 8.4 du logiciel