Wenn es um die Verwaltung von Postgres-Datenbanken geht, gibt es eine Vielzahl von Tools von Drittanbietern wie SQL Workbench/J oder pgAdmin III. Postgres selbst wird jedoch mit einem leistungsstarken Befehlszeilentool namens psql
geliefert Das ist großartig für diejenigen, die mit dem Terminal vertraut sind oder Verwaltungsaufgaben skripten möchten. Eine der häufigsten Aufgaben eines Datenbankadministrators besteht darin, sich einfach mit der Umgebung vertraut zu machen. Dazu gehören Fragen wie „Welche Datenbanken befinden sich auf diesem Server?“. oder „Welche Tabellen sind in einer bestimmten Datenbank auf diesem Server gespeichert?“. In diesem Tutorial lernen wir, wie Sie diese Schlüsselfragen von der Befehlszeile aus mit psql
beantworten .
Meta-Befehle
Zusätzlich zur Möglichkeit, rohe SQL-Abfragen über psql
an den Server zu senden Sie können auch psql
nutzen Metabefehle, um Informationen vom Server zu erhalten. Meta-Befehle sind Befehle, die von psql
ausgewertet werden und oft in SQL übersetzt, das für die Systemtabellen auf dem Server ausgegeben wird, wodurch Administratoren Zeit bei der Durchführung von Routineaufgaben sparen. Sie werden durch einen umgekehrten Schrägstrich gekennzeichnet, gefolgt vom Befehl und seinen Argumenten. Wir werden unten einige Beispiele dafür sehen.
Datenbanken auflisten
Ein einzelner Postgres-Serverprozess kann mehrere Datenbanken gleichzeitig verwalten. Jede Datenbank wird als separater Dateisatz in einem eigenen Verzeichnis innerhalb des Datenverzeichnisses des Servers gespeichert. Um alle definierten Datenbanken auf dem Server anzuzeigen, können Sie \list
verwenden meta-Befehl oder seine Abkürzung \l
.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
sales | ubuntu | 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
(4 rows)
Datenbanken wechseln
Die meisten Postgres-Server haben standardmäßig drei Datenbanken definiert:template0
, template1
und postgres
. template0
und template1
sind Skelettdatenbanken, die von CREATE DATABASE
verwendet werden oder verwendet werden können Befehl. postgres
ist die Standarddatenbank, zu der Sie eine Verbindung herstellen, bevor Sie andere Datenbanken erstellt haben. Sobald Sie eine andere Datenbank erstellt haben, möchten Sie zu dieser wechseln, um Tabellen zu erstellen und Daten einzufügen. Wenn Sie mit Servern arbeiten, die mehrere Datenbanken verwalten, müssen Sie häufig zwischen Datenbanken wechseln. Dies kann mit dem \connect
erfolgen meta-Befehl oder seine Abkürzung \c
.
postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#
Listentabellen
Sobald Sie sich mit einer Datenbank verbunden haben, möchten Sie überprüfen, welche Tabellen dort erstellt wurden. Dies kann mit dem \dt
erfolgen Meta-Befehl. Wenn jedoch keine Tabellen vorhanden sind, erhalten Sie keine Ausgabe.
sales=# \dt
No relations found.
sales=#
Nachdem eine Tabelle erstellt wurde, wird sie in einer tabellarischen Liste der erstellten Tabellen zurückgegeben.
sales=# CREATE TABLE leads (id INTEGER PRIMARY KEY, name VARCHAR);
CREATE TABLE
sales=# \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+--------
public | leads | table | ubuntu
(1 row)
sales=#