Co jest równoważne show tables
(z MySQL) w PostgreSQL?
Co jest równoważne show tables
(z MySQL) w PostgreSQL?
Odpowiedzi:
Od psql
interfejsu wiersza poleceń
Najpierw wybierz bazę danych
\c database_name
Następnie pokazuje wszystkie tabele w bieżącym schemacie:
\dt
Programowo (lub psql
oczywiście również z interfejsu):
SELECT * FROM pg_catalog.pg_tables;
Tabele systemowe znajdują się w pg_catalog
bazie danych.
\l
jest odpowiednikiem show databases
MySQL. dt
≃ show tables
i l
≃show databases
\dt
jest bardzo przydatne. Ten pg_catalog.pg_tables
jest o wiele mniejszy, ponieważ wydaje się, że łączy on tabele wewnętrzne z tabelami utworzonymi przez użytkownika dla dowolnej bazy danych, z którą się łączysz.
psql my_db_name
należy uruchomić, \dt
aby działać. Kiedy prowadziłem psql
bez nazwy bazy danych, otrzymałem komunikat „Nie znaleziono relacji”
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
\c <DATABASE_NAME>
wybrać bazę danych.
Zaloguj się jako administrator:
sudo -u postgres psql
Możesz wyświetlić listę wszystkich baz danych i użytkowników według \l
poleceń (listę innych poleceń według\?
).
Teraz, jeśli chcesz zobaczyć innych baz danych można zmienić przez użytkownika / bazy \c
poleceniem \c template1
, \c postgres postgres
i użytkowania \d
, \dt
lub\dS
zobaczyć tabele / widoki / etc.
(Dla pełności)
Można również wykonać zapytanie do schematu informacyjnego (standard SQL) :
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
Możesz użyć interaktywnego terminalu PostgreSQL Psql, aby wyświetlić tabele w PostgreSQL.
1. Uruchom Psql
Zwykle możesz uruchomić następującą komendę, aby wejść do psql:
psql DBNAME USERNAME
Na przykład, psql template1 postgres
Jedną z możliwych sytuacji jest: załóżmy, że logujesz się jako root i nie pamiętasz nazwy bazy danych. Możesz po prostu wprowadzić najpierw Psql, uruchamiając:
sudo -u postgres psql
W niektórych systemach polecenie sudo nie jest dostępne, możesz zamiast tego uruchomić dowolne z poniższych poleceń:
psql -U postgres
psql --username=postgres
2. Pokaż tabele
Teraz w Psql możesz uruchamiać polecenia takie jak:
\?
wypisz wszystkie polecenia\l
listy baz danych\conninfo
wyświetlać informacje o bieżącym połączeniu\c [DBNAME]
połączyć się z nową bazą danych, np. \c template1
\dt
wyświetla tabele schematu publicznego\dt <schema-name>.*
wyświetla tabele niektórych schematów, np. \dt public.*
\dt *.*
wyświetla tabele wszystkich schematówSELECT * FROM my_table;
(Uwaga: instrukcja musi być zakończona średnikiem ;
)\q
zamknij psqlUruchomienie psql z flagą -E spowoduje wyświetlenie zapytania używanego wewnętrznie do implementacji \ dt i podobnych:
sudo -u postgres psql -E
postgres=# \dt
********* QUERY **********
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' 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;
**************************
Zaloguj się jako administrator, aby sprawdzić wszystkie bazy danych i ich schematy: -
sudo su - postgres
Następnie możemy dostać się do powłoki postgresql za pomocą następującego polecenia: -
psql
Możesz teraz sprawdzić listę wszystkich baz danych za pomocą następującego polecenia: -
\l
Jeśli chcesz również sprawdzić rozmiary baz danych, użyj: -
\l+
Naciśnij, q
aby wrócić.
Po znalezieniu bazy danych możesz teraz połączyć się z tą bazą danych za pomocą następującego polecenia: -
\c database_name
Po podłączeniu możesz sprawdzić tabele bazy danych lub schemat:
\d
Teraz, aby powrócić do powłoki, użyj: -
q
Teraz, aby zobaczyć szczegóły dotyczące określonego stołu, użyj: -
\d table_name
Aby wrócić do postgresql_shell naciśnij \q
.
Aby powrócić do terminalu, naciśnij exit
.
Jeśli chcesz zobaczyć tylko listę utworzonych przez siebie tabel, możesz tylko powiedzieć:
\dt
Ale mamy również, PATTERN
które pomogą Ci dostosować, które tabele mają być wyświetlane. Aby wyświetlić wszystkie, w tym pg_catalog
schemat, możesz dodać *
.
\dt *
Jeśli zrobisz: \?
\ dt [S +] [PATTERN] tabele list
użyj tylko zobacz tabele
=> \dt
jeśli chcesz zobaczyć tabele schematów
=>\dt+
jeśli chcesz zobaczyć określone tabele schematów
=>\dt schema_name.*
+
z S
. Ten ostatni (litera) pokazuje tabele schematów. Po +
prostu pokazuje dodatkowe informacje.
Najpierw połącz się z bazą danych za pomocą następującego polecenia
\c database_name
I zobaczysz tę wiadomość - You are now connected to database database_name
. I uruchamiają następujące polecenie
SELECT * FROM table_name;
W nazwa_bazy_danych i nazwa_tabeli wystarczy zaktualizować nazwę bazy danych i tabeli
Jeśli używasz pgAdmin4 w PostgreSQL, możesz użyć tego do wyświetlenia tabel w bazie danych:
select * from information_schema.tables where table_schema='public';
Zauważ, że \dt
sam będzie wyświetlał tabele publicznie schemacie używanej bazy danych. Lubię trzymać swoje tabele w osobnych schematach, więc zaakceptowana odpowiedź nie działała dla mnie.
Aby wyświetlić listę wszystkich tabel w ramach określonego schematu , musiałem:
1) Połącz się z żądaną bazą danych:
psql mydb
2) Podaj nazwę schematu, dla której chcę zobaczyć tabele po \dt
poleceniu, w następujący sposób:
\dt myschema.*
To pokazuje mi wyniki, którymi jestem zainteresowany:
List of relations
Schema | Name | Type | Owner
----------+-----------------+-------+----------
myschema | users | table | postgres
myschema | activity | table | postgres
myschema | roles | table | postgres
select
*
from
pg_catalog.pg_tables
where
schemaname != 'information_schema'
and schemaname != 'pg_catalog';
\ dt (nie * wymagane) - wyświetli listę wszystkich tabel dla istniejącej bazy danych, z którą jesteś już połączony. Warto również zauważyć:
\ d [nazwa_tabeli] - pokaże wszystkie kolumny dla danej tabeli, w tym informacje o typie, referencje i kluczowe ograniczenia.
Używając psql : \ dt
Lub:
SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
AND c.relkind = 'r'
AND relname NOT LIKE 'pg_%'
ORDER BY 1
Przede wszystkim musisz połączyć się z bazą danych jak
moja baza danych to ubuntu
użyj tego polecenia, aby się połączyć
\c ubuntu
Ta wiadomość pojawi się
„Jesteś teraz połączony z bazą danych„ ubuntu ”jako użytkownik„ postgres ”.”
Teraz
Uruchom to polecenie, aby wyświetlić wszystkie tabele
\d+
Najprostszym sposobem na wyświetlenie wszystkich tabel w wierszu poleceń jest, według mojego gustu:
psql -a -U <user> -p <port> -h <server> -c "\dt"
Dla danej bazy danych po prostu dodaj nazwę bazy danych:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
Działa zarówno w systemie Linux, jak i Windows.
jako szybki oneliner
# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'
lub jeśli wolisz dużo wyraźniejszy wielowarstwowy wydruk Json:
IFS='' read -r -d '' sql_code <<"EOF_CODE"
select array_to_json(array_agg(row_to_json(t))) from (
SELECT table_catalog,table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name ) t
EOF_CODE
psql -d postgres -t -q -c "$sql_code"|jq
Aby wyświetlić tabele obce w psql, uruchom \dE