2013-04-04 18 views
11

Gibt es ein Analog zu CREATE TABLE IF NOT EXISTS zum Erstellen von Datenbanken?Postgres-Datenbank erstellen, wenn nicht vorhanden

Hintergrund: Ich schreibe ein Skript, um das Schema in PostgreSQL auf einem unbekannten System automatisch einzurichten. Ich bin mir nicht sicher, ob die Datenbank (oder sogar ein Teil des Schemas) bereits implementiert wurde. Daher möchte ich meinen Code so strukturieren, dass er nicht fehlschlägt (oder idealerweise sogar Fehler anzeigt), wenn ein Teil der Struktur bereits existiert. Ich möchte die Fehler, die mich davon abhalten, eine Datenbank zu erstellen (also zukünftige Schemaänderungen abzubrechen, da sie nicht funktionieren), von diesem Fehler unterscheiden.

Antwort

4

Nein, aber Sie könnten die Tabelle pg_catalog.pg_database abfragen, um festzustellen, ob sie existiert.

+1

Sie müssen dies in Funktion dann tun, und dies würde in 9.3 nicht funktionieren, da Postgres das Erstellen/Ablegen von Datenbanken innerhalb von Funktion oder Multi-Befehl-Zeichenfolge nicht zulassen. – ahanin

+0

Aber Sie könnten ein externes Skript in PHP, Python, Perl oder was auch immer Sie bevorzugen schreiben. – Eelke

+1

Wäre es nicht einfacher, nur DROP TABLE IF EXISTS "foo" zu verwenden; Tabelle erstellen "foo"; – Enwired

Verwandte Themen