Ändern des Datenbank Kontext über SQL

Hallo miteinander,

folgendes Problem:
Ich würde gerne ein sql script schreiben, dass mir eine frische Postgres installation initialisiert.
D.H.: Anlegen der Datenbank und erstellen von tables, etc alles in einem Scriot.
Wie kann ich nun im Script auf die neu angelegte Datenbank wechseln, damit mir meine CREATE TABLES, etc. nicht auf der initial gewählten “postgres” Datenbank ablaufen?

Wenn ich im PgAdmin ein BACKUP mache, dann schaut die so aus:
CREATE DATABASE frontrail WITH TEMPLATE = template0 ENCODING = ‘UTF8’ LC_COLLATE = ‘C’ LC_CTYPE = ‘C’;
ALTER DATABASE frontrail OWNER TO frontrail;

\connect frontrail

Allerdings wird dieses Connect nicht von einem reinen SQL Interpreter gelesen. Kurz gesagt es funktioniert nicht.

Vielen Dank für eure Hilfe

Was verstehst Du unter einem ‘reinen SQL Interpreter’?

kretschmer@tux:~$ cat mruepp.sql
create database mruepp;

\connect mruepp;

create table mruepp(t text);
insert into mruepp(t) values ('geht doch, oder?');

kretschmer@tux:~$ psql -X test -f mruepp.sql
psql:mruepp.sql:1: ERROR:  database "mruepp" already exists
psql (8.4.2)
You are now connected to database "mruepp".
CREATE TABLE
INSERT 0 1
kretschmer@tux:~$ psql mruepp -c 'select * from mruepp';
        t
------------------
 geht doch, oder?
(1 row)

Ich seh grad, ich hatte das 2 mal aufgerufen, das erste mal ohne dem -X, weil ich in meiner ~/.psqlrc Autocommit abgeschaltet hatte war zwar die DB da (creaedb ist nicht tx-fähig), aber die Tabelle fehlte.

Aber davon abgesehen, es funktioniert mit \connect


Andreas