Snažím se naučit správu PostgreSQL a začal jsem se učit, jak používat nástroj příkazového řádku psql
.
Když se přihlásím pomocí psql --username=postgres
, jak mohu uvést všechny databáze a tabulky?
Zkusil jsem \d
, d
a dS+
ale nic není uvedeno. Vytvořil jsem dvě databáze a několik tabulek s programem pgAdmin III, takže vím, že by měly být uvedeny.
Vezměte prosím na vědomí následující příkazy:
\list
nebo \l
: seznam všech databází\dt
: seznam všech tabulek v aktuální databázi pomocí search_path
\dt *.
: seznam všech tabulek v aktuální databázi bez ohledu na vaše search_path
Nikdy neuvidíte tabulky v jiných databázích, tyto tabulky nejsou viditelné. Chcete-li zobrazit její tabulky (a další objekty), musíte se připojit ke správné databázi.
Přepínání databází:
\connect database_name
nebo \c database_name
Viz příručka o psql .
Seznam databází:
SELECT datname FROM pg_database
WHERE datistemplate = false;
Tím jsou uvedeny tabulky v aktuální databázi
SELECT table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name;
[email protected]$ /bin/psql -h localhost --username=pgadmin --list
Nebo příkaz řekl jednoduše:
psql -U pgadmin -l
Tyto příkazy to vytisknou na terminálu:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
kurz_prod | pgadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
pgadmin | pgadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
Toto jsou dostupné databáze.
Předtím, než budete moci v seznamu uvést tabulky v této databázi, musíte určit databázi.
[email protected]$ psql -U pgadmin -d kurz_prod
Tím se dostanete na terminál psql:
kurz_prod=#
Použijte příkaz \d
znamená zobrazit všechny tabulky, pohledy a sekvence
kurz_prod=# \d
Vytiskne se:
List of relations
Schema | Name | Type | Owner
--------+---------+----------+---------
public | mytable | table | pgadmin
public | testing | sequence | pgadmin
(2 rows)
Poté ukončete terminál psql zadáním \q
a stiskněte klávesu enter. Nebo Ctrl-D
dělá totéž. Toto jsou tabulky v této databázi.
\l
je také zkratka pro \list
. Existuje poměrně málo příkazů lomítka, které můžete zobrazit v psql pomocí \?
.
Chcete-li získat více informací o databázi a seznamu tabulek, můžete:
\l+
pro výpis databází
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description
------------+----------+----------+-------------+-------------+-----------------------+---------+------------+--------------------------------------------
pgbench | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 29 MB | pg_default |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 6073 kB | pg_default | default administrative connection database
slonmaster | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 1401 MB | movespace |
slonslave | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 32 MB | pg_default |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| 5785 kB | pg_default | unmodifiable empty database
| | | | | postgres=CTc/postgres | | |
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| 5985 kB | pg_default | default template for new databases
| | | | | postgres=CTc/postgres | | |
test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 13 MB | pg_default |
(7 rows)
a
\d+
pro zobrazení všech tabulek v aktuálním schématu search_path v aktuální databázi.
test=# \dn+ --list schemas
List of schemas
Name | Owner | Access privileges | Description
--------+----------+----------------------+------------------------
public | postgres | postgres=UC/postgres+| standard public schema
| | =UC/postgres |
schema1 | postgres | postgres=UC/postgres+|
| | =UC/postgres |
(2 row)
test=# set search_path to schema1, public;
SET
test=# \d+
List of relations
Schema | Name | Type | Owner | Size | Description
---------+-----------------+-------+--------------+------------+-------------
public | all_units | table | postgres | 0 bytes |
public | asset | table | postgres | 16 kB |
public | asset_attribute | table | postgres | 8192 bytes |
public | food | table | postgres | 48 kB |
public | name_log | table | postgres | 8192 bytes |
public | outable | table | ordinaryuser | 0 bytes |
public | outable2 | table | ordinaryuser | 0 bytes |
public | test | table | postgres | 16 kB |
public | usr | table | postgres | 5008 kB |
schema1 | t1 | table | postgres | 0 bytes |
(10 rows)
Z pg_Admin můžete jednoduše spustit následující v aktuální databázi a získá všechny tabulky pro zadané schéma:
SELECT *
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
AND table_schema = 'public'
ORDER BY table_type, table_name
Tím získáte seznam všech trvalých tabulek (obvykle tabulky, které hledáte). Pokud změníte *
zástupný znak pouze k table_name
. Veřejnost table_schema
je výchozí schéma pro většinu databází, pokud administrátor nenastavil nové schéma.
Je možné, že jste tabulky vložili do schématu, které není ve vaší vyhledávací cestě, nebo do výchozí, tj. Veřejné, takže se tabulky nebudou zobrazovat pomocí\dt. Pokud používáte schéma nazvané řekněme data, můžete to opravit spuštěním,
alter database <databasename> set search_path=data, public;
Ukončete a znovu zadejte psql a nyní\dt vám také zobrazí tabulky v datech schématu.