Einführung
PostgreSQL bietet zwei Befehlszeilenmethoden, um eine Datenbank zu löschen – mithilfe von DROP DATABASE
-Anweisung oder ein Shell-Dienstprogramm.
Das Entfernen nicht verwendeter Datenbanken ist eine bewährte Vorgehensweise und trägt dazu bei, den Arbeitsbereich sauber zu halten. Beachten Sie jedoch, dass beim Löschen einer vorhandenen PostgreSQL-Datenbank alle Katalogeinträge und Daten für diese Datenbank entfernt werden.
Lesen Sie weiter, um zu erfahren, wie Sie eine Datenbank in PostgreSQL löschen.
Voraussetzungen
- PostgreSQL 10 oder höher installiert und konfiguriert (befolgen Sie unsere Anleitung für Ubuntu oder Windows; falls bereits installiert, überprüfen Sie die PostgreSQL-Version auf dem System).
- Zugriff auf das Terminal mit sudo-Berechtigungen.
DROP DATABASE-Anweisung
Wichtig :NUR der Datenbankbesitzer kann eine Datenbank löschen.
Die erste Methode zum Entfernen einer PostgreSQL-Datenbank ist die Verwendung der folgenden SQL-Anweisung:
DROP DATABASE <database name>;
Der Befehl entfernt das Verzeichnis, das die Datenbankinformationen und die Katalogeinträge enthält. Nur der Datenbankbesitzer kann DROP DATABASE
ausführen Befehl. Wenn jemand gerade die Datenbank verwendet, wird der Befehl nicht ausgeführt.
Um zu sehen, wie DROP DATABASE
funktioniert, gehen Sie wie folgt vor:
1. Öffnen Sie das Terminal (STRG +ALT +T ).
2. Verbinden Sie sich mit PostgreSQL:
sudo -i -u postgres psql
3. Erstellen Sie eine Datenbank für das Beispiel:
CREATE DATABASE example;
Das Terminal gibt die ausgeführte Anweisung aus.
4. Alle Datenbanken auflisten mit:
\l
Die Datenbank aus dem vorherigen Schritt wird in der Liste angezeigt.
5. Löschen Sie die Datenbank mit:
DROP DATABASE example;
Die Ausgabe zeigt die ausgeführte Anweisung.
6. Alle Datenbanken erneut auflisten:
\l
Die Beispieldatenbank erscheint nicht mehr in der Liste.
WENN vorhanden
Der IF EXISTS
Option ist für alle Versionen offen, in denen DROP DATABASE
ist verfügbar. Die vollständige Befehlssyntax mit dem IF EXISTS
Option ist wie folgt:
DROP DATABASE IF EXISTS <database name>;
Die Option prüft zuerst, ob eine Datenbank existiert, bevor sie gelöscht wird. Wenn eine Datenbank vorhanden ist, löscht der Befehl die Datenbank. Wenn jedoch keine Datenbank vorhanden ist, gibt der Befehl eine informative Hinweismeldung aus.
Führen Sie die folgenden Schritte aus, um zu testen, wie der Befehl funktioniert:
1. Erstellen Sie eine Beispieldatenbank:
CREATE DATABASE example;
2. Löschen Sie die Datenbank mit IF EXISTS
Möglichkeit:
DROP DATABASE IF EXISTS example;
Das Ergebnis ist identisch mit der Verwendung von DROP DATABASE
falls die Datenbank existiert.
3. Die Datenbank ist nicht mehr verfügbar. Führen Sie den Befehl erneut aus, um die Ausgabe anzuzeigen:
DROP DATABASE IF EXISTS example;
Eine Hinweismeldung wird gedruckt, die besagt, dass die Datenbank nicht existiert.
4. Um den Unterschied zwischen der Verwendung von IF EXISTS
zu sehen und ohne die Option, führen Sie den folgenden Befehl aus:
DROP DATABASE example;
Verwenden von DROP DATABASE
ohne IF EXISTS
Option auf einer nicht existierenden Datenbank gibt eine Fehlermeldung aus.
MIT (KRAFT)
Der WITH (FORCE)
Option ist in PostgreSQL Version 13 und höher verfügbar.
Die DROP DATABASE
-Methode entfernt die Datenbank nicht, wenn sie verwendet wird. Wenn die Datenbank verwendet wird, gibt das Terminal einen Fehler aus, dass eine Datenbanksitzung geöffnet ist.
Fügen Sie WITH (FORCE)
hinzu Option, um die Sitzung zwangsweise zu schließen und die Datenbank zu löschen:
DROP DATABASE <database name> WITH (FORCE);
Wenn möglich, schließt Postgres die Sitzung des Benutzers und löscht die Datenbank zwangsweise.
Das dropdb-Dienstprogramm
Das Shell-Dienstprogramm dropdb ist ein Wrapper für DROP DATABASE
Befehl. Tatsächlich sind die beiden Methoden identisch. dropdb bietet jedoch zusätzliche Optionen, darunter das Entfernen von Datenbanken aus der Ferne.
Die grundlegende Syntax ist:
dropdb <connection parameters> <options> <database name>
Optionen
Die folgende Tabelle zeigt alle möglichen Optionen bei der Verwendung des dropdb-Dienstprogramms.
Option | Typ | Beschreibung |
---|---|---|
-e --echo | Option | Druckt die Befehle, die dropdb an den Server sendet. |
-f --force | Option | Versucht, alle aktuellen Verbindungen zu beenden, bevor die Datenbank gelöscht wird. |
-i --interactive | Option | Fordert zur Überprüfung auf, bevor das Löschen der Datenbank ausgeführt wird. |
-V --version | Option | Die Konsole gibt die Utility-Version aus. |
--if-exists | Option | Druckt einen Hinweis anstelle eines Fehlers, wenn die Datenbank nicht existiert. |
-? --help | Option | Hilfemenü anzeigen. |
-h <host> --host=<host> | Verbindungsparameter | Gibt den Hostnamen des Rechners an, auf dem der Server läuft. |
-p <port> --port=<port> | Verbindungsparameter | Gibt den TCP-Port an, an dem der Server lauscht. |
-U <username> --username <username> | Verbindungsparameter | Verbinden Sie sich als der angegebene Benutzer. |
-w --no-password | Verbindungsparameter | Geben Sie niemals die Passwortabfrage aus. Nützlich für Batch- und Skript-Jobs, wenn kein Benutzer anwesend ist. |
-W --password | Verbindungsparameter | Passwortabfrage erzwingen. Ohne die Option verliert der Server den Verbindungsversuch, wenn ein Passwort erforderlich ist. |
--maintenance-db=<database name> | Verbindungsparameter | Die Option gibt den Datenbanknamen Connection an. |
Probieren Sie zum Beispiel den folgenden Befehl aus, um zu sehen, wie dropdb mit -i
funktioniert und -e
Optionen:
dropdb -i -e example
Das Programm fragt vor dem Löschen wegen des -i
nach einer Bestätigung -Tag.
Drücken Sie y bestätigen. Das Programm gibt die generierten Befehle an den Server aus. Da die Datenbank nicht existiert, gibt das Programm einen Fehler aus und wird beendet.