Kiedy robię \dt
w psql, otrzymuję tylko listę tabel w bieżącym schemacie ( public
domyślnie).
Jak mogę uzyskać listę wszystkich tabel we wszystkich schematach lub określonym schemacie?
źródło
Kiedy robię \dt
w psql, otrzymuję tylko listę tabel w bieżącym schemacie ( public
domyślnie).
Jak mogę uzyskać listę wszystkich tabel we wszystkich schematach lub określonym schemacie?
We wszystkich schematach:
=> \dt *.*
W określonym schemacie:
=> \dt public.*
Możliwe jest stosowanie wyrażeń regularnych z pewnymi ograniczeniami
\dt (public|s).(s|t)
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
public | s | table | cpn
public | t | table | cpn
s | t | table | cpn
Zaawansowani użytkownicy mogą używać notacji wyrażeń regularnych, takich jak klasy znaków, na przykład [0-9], aby dopasować dowolną cyfrę. Wszystkie znaki specjalne wyrażeń regularnych działają zgodnie z opisem w Sekcji 9.7.3, z wyjątkiem tego, że
.
jest traktowane jako separator, jak wspomniano powyżej,*
który jest tłumaczony na notację wyrażenia regularnego.*
,?
która jest tłumaczona.
i$
która jest dosłownie dopasowana. Możesz emulować te znaki wzorca w razie potrzeby pisząc?
dla.
,(R+|)
dlaR*
lub(R|)
dlaR?
.$
nie jest potrzebny jako znak wyrażenia regularnego, ponieważ wzorzec musi pasować do całej nazwy, w przeciwieństwie do zwykłej interpretacji wyrażeń regularnych (innymi słowy,$
jest automatycznie dołączany do wzoru). Napisz*
na początku i / lub na końcu, jeśli nie chcesz, aby wzór został zakotwiczony. Zauważ, że w podwójnych cudzysłowach wszystkie znaki specjalne wyrażeń regularnych tracą swoje specjalne znaczenie i są dosłownie dopasowane. Ponadto znaki specjalne wyrażeń regularnych są dosłownie dopasowywane do wzorców nazw operatorów (tzn. Argumentów\do
).
\dt
jest ekwiwalentny\dt public.*
, mam rację?\dt public.user_info, public.user_scope
?\dt public.a; \dt public.b;
na jednej linii.search_path
, i że domyślne do"$user", public.*
. W związku z tymset search_path=s; \dt
ma zamiar wyświetlić wszystkie tabele w schemacies
.Możesz wybrać tabele z
information_schema
źródło
Alternatywnie
information_schema
można użyćpg_tables
:źródło
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
information_schema
nie wyświetlaniu pozycji zepublic
schematu, alepg_tables
metoda działała dobrze. Wielkie dzięki!Dla tych, którzy napotkają to w przyszłości:
Jeśli chcesz zobaczyć listę relacji dla kilku schematów:
źródło