När det gäller att administrera Postgres-databaser finns det ett brett utbud av tredjepartsverktyg tillgängliga som SQL Workbench/J eller pgAdmin III. Postgres själv levereras dock med ett kraftfullt kommandoradsverktyg som heter psql
vilket är bra för dem som är bekanta med terminalen eller vill ha manusadministration. En av de vanligaste uppgifterna som en databasadministratör utför är helt enkelt att bekanta sig med miljön. Detta innebär att ställa frågor som "Vilka databaser finns på den här servern?" eller "Vilka tabeller lagras i en viss databas på den här servern?". I den här handledningen kommer vi att lära oss hur du svarar på dessa nyckelfrågor från kommandoraden med psql
.
Metakommandon
Förutom att kunna skicka rå SQL-frågor till servern via psql
du kan också dra fördel av psql
meta-kommandon för att hämta information från servern. Metakommandon är kommandon som utvärderas av psql
och ofta översatt till SQL som utfärdas mot systemtabellerna på servern, vilket sparar administratörer tid när de utför rutinuppgifter. De betecknas med ett snedstreck och följs sedan av kommandot och dess argument. Vi kommer att se några exempel på detta nedan.
Listdatabaser
En enda Postgres-serverprocess kan hantera flera databaser samtidigt. Varje databas lagras som en separat uppsättning filer i sin egen katalog i serverns datakatalog. För att se alla definierade databaser på servern kan du använda \list
meta-kommando eller dess genväg \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)
Byt databas
De flesta Postgres-servrar har tre databaser definierade som standard:template0
, template1
och postgres
. template0
och template1
är skelettdatabaser som används eller kan användas av CREATE DATABASE
kommando. postgres
är standarddatabasen du kommer att ansluta till innan du har skapat några andra databaser. När du har skapat en annan databas kommer du att vilja byta till den för att skapa tabeller och infoga data. När du arbetar med servrar som hanterar flera databaser kommer du ofta att behöva hoppa mellan databaser ofta. Detta kan göras med \connect
metakommando eller dess genväg \c
.
postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#
Listtabeller
När du har anslutit till en databas vill du inspektera vilka tabeller som har skapats där. Detta kan göras med \dt
meta-kommando. Men om det inte finns några tabeller får du ingen utdata.
sales=# \dt
No relations found.
sales=#
När du har skapat en tabell kommer den att returneras i en tabelllista över skapade tabeller.
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=#