Når det kommer til at administrere Postgres-databaser, er der en bred vifte af tredjepartsværktøjer tilgængelige, såsom SQL Workbench/J eller pgAdmin III. Postgres selv kommer dog med et kraftfuldt kommandolinjeværktøj kaldet psql
hvilket er fantastisk til dem, der er fortrolige med terminalen eller ønsker at scripte administrationsopgaver. En af de mest almindelige opgaver, en databaseadministrator udfører, er simpelthen at blive fortrolig med miljøet. Dette involverer at stille spørgsmål som "Hvilke databaser findes på denne server?" eller "Hvilke tabeller er gemt i en bestemt database på denne server?". I denne vejledning lærer vi, hvordan du besvarer disse nøglespørgsmål fra kommandolinjen ved hjælp af psql
.
Metakommandoer
Ud over at kunne sende rå SQL-forespørgsler til serveren via psql
du kan også drage fordel af psql
meta-kommandoer for at få information fra serveren. Meta-kommandoer er kommandoer, der evalueres af psql
og ofte oversat til SQL, der udstedes mod systemtabellerne på serveren, hvilket sparer administratorer for tid, når de udfører rutineopgaver. De er angivet med en omvendt skråstreg og derefter efterfulgt af kommandoen og dens argumenter. Vi vil se nogle eksempler på dette nedenfor.
listedatabaser
En enkelt Postgres-serverproces kan administrere flere databaser på samme tid. Hver database er gemt som et separat sæt filer i sin egen mappe i serverens datamappe. For at se alle de definerede databaser på serveren kan du bruge \list
meta-kommando eller dens genvej \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)
Skift database
De fleste Postgres-servere har tre databaser defineret som standard:template0
, template1
og postgres
. template0
og template1
er skeletdatabaser, der er eller kan bruges af CREATE DATABASE
kommando. postgres
er standarddatabasen, du vil oprette forbindelse til, før du har oprettet andre databaser. Når du har oprettet en anden database, vil du gerne skifte til den for at oprette tabeller og indsætte data. Når du arbejder med servere, der administrerer flere databaser, vil du ofte opleve behovet for at hoppe mellem databaser ofte. Dette kan gøres med \connect
meta-kommando eller dens genvej \c
.
postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#
Fortegnelsestabeller
Når du har oprettet forbindelse til en database, vil du gerne undersøge, hvilke tabeller der er blevet oprettet der. Dette kan gøres med \dt
meta-kommando. Men hvis der ikke er nogen tabeller, får du intet output.
sales=# \dt
No relations found.
sales=#
Efter oprettelse af en tabel vil den blive returneret i en tabelliste over oprettede 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=#