Ergebnis 1 bis 2 von 2

Thema: Ändern des Datenbank Kontext über SQL

  1. #1
    mruepp ist offline Neuer Benutzer
    Registriert seit
    04.03.2010
    Beiträge
    2

    Standard Ä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

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von mruepp Beitrag anzeigen
    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'?

    Code:
    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
    Geändert von akretschmer (04.03.2010 um 14:36 Uhr)
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum