Als het gaat om het beheer van Postgres-databases, is er een grote verscheidenheid aan tools van derden beschikbaar, zoals SQL Workbench/J of pgAdmin III. Postgres zelf wordt echter geleverd met een krachtige opdrachtregeltool genaamd psql
wat geweldig is voor mensen die bekend zijn met de terminal of die op zoek zijn naar scriptbeheertaken. Een van de meest voorkomende taken die een databasebeheerder uitvoert, is simpelweg vertrouwd raken met de omgeving. Dit omvat het stellen van vragen als "Welke databases bevinden zich op deze server?" of "Welke tabellen worden opgeslagen in een bepaalde database op deze server?". In deze zelfstudie leren we hoe we deze belangrijke vragen vanaf de opdrachtregel kunnen beantwoorden met behulp van psql
.
Meta-Commands
Naast de mogelijkheid om onbewerkte SQL-query's naar de server te verzenden via psql
u kunt ook profiteren van de psql
meta-commando's om informatie van de server te verkrijgen. Meta-commando's zijn commando's die worden geëvalueerd door psql
en vaak vertaald in SQL die wordt uitgegeven tegen de systeemtabellen op de server, waardoor beheerders tijd besparen bij het uitvoeren van routinetaken. Ze worden aangegeven met een backslash en vervolgens gevolgd door het commando en de bijbehorende argumenten. Hieronder zullen we enkele voorbeelden hiervan zien.
Lijstdatabases
Een enkel Postgres-serverproces kan meerdere databases tegelijkertijd beheren. Elke database wordt opgeslagen als een afzonderlijke set bestanden in een eigen map binnen de gegevensmap van de server. Om alle gedefinieerde databases op de server te bekijken, kunt u de \list
. gebruiken meta-commando of de sneltoets \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)
Van database wisselen
De meeste Postgres-servers hebben standaard drie databases gedefinieerd:template0
, template1
en postgres
. template0
en template1
zijn skeletdatabases die worden of kunnen worden gebruikt door de CREATE DATABASE
opdracht. postgres
is de standaarddatabase waarmee u verbinding maakt voordat u andere databases hebt gemaakt. Als u eenmaal een andere database hebt gemaakt, wilt u ernaar overschakelen om tabellen te maken en gegevens in te voegen. Wanneer u werkt met servers die meerdere databases beheren, zult u vaak merken dat u vaak tussen databases moet springen. Dit kan met de \connect
meta-commando of de sneltoets \c
.
postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#
Lijsttabellen
Als je eenmaal verbinding hebt gemaakt met een database, wil je kijken welke tabellen daar zijn gemaakt. Dit kan met de \dt
meta-opdracht. Als er echter geen tabellen zijn, krijgt u geen uitvoer.
sales=# \dt
No relations found.
sales=#
Nadat een tabel is gemaakt, wordt deze geretourneerd in een tabel met gemaakte tabellen.
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=#