Когда я делаю \dt
в psql, я получаю только список таблиц в текущей схеме ( public
по умолчанию).
Как я могу получить список всех таблиц во всех схемах или конкретной схеме?
источник
Когда я делаю \dt
в psql, я получаю только список таблиц в текущей схеме ( public
по умолчанию).
Как я могу получить список всех таблиц во всех схемах или конкретной схеме?
Во всех схемах:
=> \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|)
дляR?
.$
не требуется в качестве символа регулярного выражения, поскольку шаблон должен соответствовать целому имени, в отличие от обычной интерпретации регулярных выражений (другими словами,$
автоматически добавляется к вашему шаблону). Напишите*
в начале и / или конце, если вы не хотите, чтобы шаблон был закреплен. Обратите внимание, что в двойных кавычках все специальные символы регулярных выражений теряют свое специальное значение и сопоставляются буквально. Кроме того, специальные символы регулярного выражения сопоставляются буквально в шаблонах имен операторов (т. Е. Аргумент\do
).
\dt
эквивалентно\dt public.*
, я прав?\dt public.user_info, public.user_scope
?\dt public.a; \dt public.b;
на одной линии.search_path
, и что по умолчанию в"$user", public.*
. Следовательно,set search_path=s; \dt
собирается перечислить все таблицы в схемеs
.Вы можете выбрать таблицы из
information_schema
источник
В качестве альтернативы
information_schema
можно использоватьpg_tables
:источник
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
information_schema
списку элементов изpublic
схемы, ноpg_tables
метод работал хорошо. Большое спасибо!Для тех, кто сталкивается с этим в будущем:
Если вы хотите увидеть список отношений для нескольких схем:
источник