2014-07-03 7 views
12

fallen lassen Ich möchte alle Datenbanken mit Ausnahme einiger weniger löschen. Sagen wir, es gibt 20 Datenbanken und ich möchte 18 von ihnen löschen, aber behalten Sie 2, wie es die neuesten ist und in Gebrauch sind.wie alle Datenbanken außer einigen wenigen in Postgres

Bitte vorschlagen.

+0

"drop Datenbank Datenbankname" für Ihre löschbaren 18 Datenbanken .. – SkyWalker

+0

Vielen Dank für die schnelle Antwort! Ich möchte ein einzelnes Skript, in dem ich nur die Namen der 2 Datenbanken erwähnen möchte, die ich behalten möchte. – ManishD

+0

@ user3800715 ... und wenn Sie versucht haben, dieses Skript selbst zu schreiben, mit der Skriptsprache Ihrer Wahl, wo sind Sie steckengeblieben? –

Antwort

28

Führen Sie zuerst die folgende Abfrage im psql-Terminal aus.

select 'drop database "'||datname||'";' 
from pg_database 
where datistemplate=false; 

wird dieser drop database Befehl für alle Datenbanken generieren. Kopieren Sie das Ergebnis in einen Texteditor und schließen Sie aus, was Sie behalten möchten, und speichern Sie es als dd.sql Datei. Und es wie folgt aus:

psql -d postgres -f dd.sql 
1

Als akzeptierte Antwort irgendwie es zeigt, fallen mehrere Datenbanken für mich besonders mühsam war, so schrieb ich einen Helfer-Skript diese Operation zu lindern: https://github.com/Kraymer/ezdropdb

Kurz gesagt, geben Sie ein Muster, das die Datenbanken, die Sie unterdrücken möchten, übereinstimmen müssen, dann werden alle Ergebnisse der Datenbanknamen aufgelistet und es gibt eine letzte Eingabeaufforderung, wo Sie eingeben können, welche davon gelöscht werden sollen (siehe Screenshot auf der Projektseite).

Verwandte Themen