Список таблиц в схеме PostgreSQL


когда я делаю dt в psql я получаю только список таблиц в текущей схеме (public по умолчанию).

Как я могу получить список всех таблиц во всех схемах или конкретной схеме?

4 227

4 ответа:

во всех схемах:

=> \dt *.*

в определенной схеме:

=> \dt public.*

можно использовать регулярные выражения с некоторыми ограничениями

\dt (public|s).(s|t)
       List of relations
 Schema | Name | Type  | Owner 
--------+------+-------+-------
 public | s    | table | cpn
 public | t    | table | cpn
 s      | t    | table | cpn

продвинутые пользователи могут использовать обозначения регулярных выражений, такие как классы символов, например [0-9], чтобы соответствовать любой цифре. Все специальные символы регулярного выражения работают так, как указано в разделе 9.7.3, за исключением . который берется в качестве разделителя, как указано выше, * который является переведено в нотацию регулярного выражения .,? что в переводе означает ., и$, который соответствует буквально. Вы можете эмулировать эти символы шаблона при необходимости, написав ? для., (Р+|) для R, или (R|) для R?. $ не требуется как символ регулярного выражения, так как шаблон должен соответствовать всему имени, в отличие от обычной интерпретации регулярных выражений (другими словами, $ автоматически добавляется к вашему шаблону). Напишите * в начале и / или в конце, если вы не хотите шаблон для фиксации. Обратите внимание, что в двойных кавычках все специальные символы регулярного выражения теряют свое особое значение и сопоставляются буквально. Кроме того, специальные символы регулярного выражения сопоставляются буквально в шаблонах имен операторов (т. е. аргумент \do).

Вы можете выбрать столы из information_schema

SELECT * FROM information_schema.tables 
WHERE table_schema = 'public'

вместо information_schema можно использовать pg_tables:

select * from pg_tables where schemaname='public';

для тех, кто сталкивается с этим в будущем:

Если вы хотите увидеть список отношений Для несколько схем:

$psql mydatabase
mydatabase=# SET search_path TO public, usa;   #schema examples
SET
mydatabase=# \dt
              List of relations
 Schema |      Name       | Type  |  Owner
--------+-----------------+-------+----------
 public | counties        | table | postgres
 public | spatial_ref_sys | table | postgres
 public | states          | table | postgres
 public | us_cities       | table | postgres
 usa    | census2010      | table | postgres