Ако искате да изброите всички таблици, трябва да използвате:
\dt *.*
за да посочите, че искате всички таблици във всички схеми . Това ще включва таблици в pg_catalog , системните таблици и тези в information_schema . Няма вграден начин да се каже "всички таблици във всички дефинирани от потребителя схеми"; можете обаче да зададете своя search_path към списък с всички схеми, които представляват интерес, преди да стартирате \dt .
Може да искате да направите това програмно, в който случай psql обратно наклонена черта-команди няма да свършат работа. Това е мястото, където INFORMATION_SCHEMA идва на помощ. За да изброите таблици:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
BTW, ако някога искате да видите какво е psql прави в отговор на обратна наклонена черта команда, стартирайте psql с -E флаг. напр.:
$ psql -E regress
regress=# \list
********* QUERY **********
SELECT d.datname as "Name",
pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
d.datcollate as "Collate",
d.datctype as "Ctype",
pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;
**************************
така че можете да видите този psql търси pg_catalog.pg_database когато получи списък с бази данни. По същия начин, за таблици в дадена база данни:
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' WHEN 'f' THEN 'foreign table' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
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 <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
За предпочитане е да използвате стандартния SQL, преносим INFORMATION_SCHEMA вместо системните каталози на Pg, където е възможно, но понякога се нуждаете от специфична за Pg информация. В тези случаи е добре да потърсите директно системните каталози и psql -E може да бъде полезно ръководство за това как да го направите.