Когда я делаю \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).
Вы можете выбрать таблицы из information_schema
SELECT * FROM information_schema.tables
WHERE table_schema = 'public'
В качестве альтернативы information_schema
можно использовать pg_tables
:
select * from pg_tables where schemaname='public';
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
результирующим запросом, это SELECT tablename FROM pg_tables WHERE schemaname = 'public';
имя таблицы SELECT tablename FROM pg_tables WHERE schemaname = 'public';
information_schema
не перечисляет элементы из public
схемы, но метод pg_tables
работал хорошо. Большое спасибо!
\dt
эквивалентно\dt public.*
, Я прав?\dt public.user_info, public.user_scope
?