| PostgreSQL: Das Offizielle Handbuch | ||||
|---|---|---|---|---|
| Zurück | Schnell zurück | Schnell nach vorne | Nach vorne | |
CREATE DATABASE name
[ [ WITH ] [ OWNER [=] eigentümer ]
[ LOCATION [=] 'pfad' ]
[ TEMPLATE [=] template ]
[ ENCODING [=] kodierung ] ]CREATE DATABASE erzeugt eine neue PostgreSQL-Datenbank.
Normalerweise wird der aktuelle Benutzer der Eigentümer der neuen Datenbank. Superuser können Datenbanken erzeugen, die jemandem anders gehören, indem sie die OWNER-Klausel verwenden. Dadurch können Datenbanken für Benutzer, die keine besonderen Privilegien haben, erzeugt werden. Normale Benutzer mit dem Privileg CREATEDB können nur Datenbanken mit sich selbst als Eigentümer erzeugen.
Ein alternativer Speicherplatz kann für die Datenbank angegeben werden, um sie zum Beispiel auf einer anderen Festplatte abzulegen. Der Pfad muss mit dem Befehl initlocation vorbereitet worden sein.
Wenn der Pfadname keinen Schrägstrich enthält, dann wird er als Umgebungsvariable interpretiert, welche dem Serverprozess bekannt sein muss. Dadurch kann der Datenbankadministrator kontrollieren, wo Datenbanken erzeugt werden können. (Eine gebräuchliche Wahl ist zum Beispiel PGDATA2.) Wenn der Server mit ALLOW_ABSOLUTE_DBPATHS kompiliert wurde (nicht in der Standardeinstellung), dann werden absolute Pfadnamen, welche einen führenden Schrägstrich haben (z.B. /usr/local/pgsql/data), ebenfalls erlaubt.
Normalerweise wird eine neue Datenbank erzeugt, indem die Systemdatenbank template1 kopiert wird. Eine andere Template-Datenbank kann mit der Klausel TEMPLATE name angegeben werden. Insbesondere kann man mit TEMPLATE template0 eine „jungfräuliche“ Datenbank erzeugen, die nur die Standardobjekte Ihrer PostgreSQL-Version enthält. Das ist nützlich, wenn Sie vermeiden wollen, dass Objekte, die Sie in template1 erzeugt haben, kopiert werden.
Mit dem optionalen Parameter ENCODING wird die Zeichensatzkodierung für die Datenbank ausgewählt. Wenn er nicht angegeben ist, dann wird die Kodierung der gewählten Template-Datenbank verwendet.
Der Name der zu erzeugenden Datenbank.
Der Name des Datenbankbenutzers, dem die neue Datenbank gehören soll, oder DEFAULT um den Vorgabewert zu verwenden (der Benutzer, der den Befehl ausführt).
Eine alternative Stelle im Dateisystem, an der die neue Datenbank angelegt werden soll, angegeben als Zeichenkettenkonstante; oder DEFAULT um den Standard zu verwenden.
Der Name der Template-Datenbank, aus der die neue Datenbank erzeugt werden soll, oder DEFAULT um das Standardtemplate (template1) zu verwenden
Die Zeichensatzkodierung für die neue Datenbank. Geben Sie eine Zeichenkettenkonstante (z.B. 'SQL_ASCII') oder eine Kodierungsnummer oder DEFAULT, um die Standardkodierung zu verwenden, an.
Die optionalen Parameter können in beliebiger Reihenfolge angegeben werden, nicht nur in der oben gezeigten.
Meldung, wenn die Datenbank erfolgreich erzeugt wurde.
Sie müssen das besondere Privileg CREATEDB haben um Datenbanken zu erzeugen. Siehe CREATE USER.
Diese Meldung erscheint, wenn eine Datenbank mit dem angegebenen Namen bereits existiert.
Der Datenbankspeicherplatz pfad darf keine Apostrophe enthalten. Das ist nötig, damit die Shell-Befehle, die das Datenbankverzeichnis erzeugen, sicher ausgeführt werden können.
Wenn Sie einen expliziten Transaktionsblock offen haben, dann können Sie CREATE DATABASE nicht ausführen. Beenden Sie zuerst den Transaktionsblock.
Diese Meldungen deuten am wahrscheinlichsten auf Dateisystemprobleme, wie fehlende Zugriffsrechte auf das Datenverzeichnis oder eine volle Festplatte, hin. Der Benutzer, unter dem der Datenbankserver läuft, muss Zugriff auf das entsprechende Verzeichnis haben.
Das Programm createdb führt diesen Befehl aus und kann von der Shell aus aufgerufen werden.
Die Verwendung von alternativen Speicherplätzen, die mit absoluten Pfadnamen angegeben werden, stellt ein Sicherheitsproblem dar. Weitere Informationen finden Sie in Abschnitt 18.5.
Obwohl es möglich ist, andere Datenbanken außer template1 zu kopieren, indem ihr Name als Template-Datenbank angegeben wird, ist dies (noch) keine generell anwendbare Methode zum Kopieren von Datenbanken. Wir empfehlen, dass Datenbanken, die als Template verwendet werden sollen, als nicht beschreibbar behandelt werden. Weitere Informationen dazu finden Sie in Abschnitt 18.3.
Um eine neue Datenbank zu erzeugen:
CREATE DATABASE lusiadas;
Um eine neue Datenbank in alternativen Verzeichnis ~/private_db zu erzeugen, führen Sie Folgendes in der Shell aus:
mkdir private_db initlocation ~/private_db
Danach führen Sie Folgendes in einer psql-Sitzung aus:
CREATE DATABASE anderswo WITH LOCATION '/home/olly/private_db';
Der Befehl CREATE DATABASE ist eine PostgreSQL-Erweiterung. Datenbanken entsprechen im SQL-Standard Katalogen und deren Erzeugung ist der Implementierung überlassen.
| Zurück | Zum Anfang | Nach vorne |
| CREATE CONVERSION | Nach oben | CREATE DOMAIN |