Vorlesung Datenbanken: Benutzung von PostgreSQL

  • Wichtiger Hinweis: Um mit dem Datenbanksystem arbeiten zu können, müssen Sie einen Account für die Benutzung der Rechner am Fachbereich 10 besitzen und dieser muss für die Benutzung freigeschaltet sein. Die Freischaltung erfolgt automatisch im Laufe des Semesters für alle Teilnehmer des Learnwebkurses. Über die Freischaltung werden Sie per Email benachrichtigt.
  • Hinweis zu den Screenshots: Der in den Screenshots der folgenden Anleitungen angegebene Server (ivv5dbsrv01) ist nicht mehr aktuell. Verwenden Sie stattdessen den aktuellen Server ivv5dbsrv04. Die Angaben im Anleitungstext verwenden den aktuellen Server und müssen nicht angepasst werden.
  • Bei Problemen wenden Sie sich bitte an Dominik Drees.

Herstellen einer Verbindung

Verbindung zum Uni-Netzwerk

Der Server, auf dem das Datenbanksystem zur Verfügung gestellt wird, befindet sich im privaten Teil des Uni-Netzwerkes. Daher können Sie sich nicht einfach, wie in den vergangen Jahren, mit ihrem Rechner von zu Hause aus verbinden, sondern müssen zunächst eine Verbindung zum Uni-Netzwerk herstellen. Sie haben drei Möglichkeiten um sich mit dem Uni-Netzwerk zu verbinden:

  • Benutzen Sie einen Rechner aus den Computerpools der Universität. Diese befinden sich automatisch im Uni-Netzwerk und können eine Verbindung zum DB-Server problemlos herstellen.
  • Verbinden Sie Ihren Laptop mit dem Uni-WLAN (siehe Anleitung). Befindet sich Ihr Laptop im internen Netzwerk, sollte die Verbindung zum DB-Server keine Probleme bereiten.
  • Sollten Sie Ihren Rechner von zu Hause aus benutzen wollen, so benötigen Sie eine VPN-Verbindung zum Uni-Netzwerk. Eine Anleitung hierfür finden Sie hier.

Verbindung zum DB-Server

Wenn Sie eine Verbindung zum Uni-Netzwerk hergestellt haben, können Sie sich nun plattformabhängig mit dem DB-Server verbinden.

Unter Windows

Putty Screenshot
Beispieleingabe in Putty
© Uni MS - Dr. Ludger Becker
Loginscreen Windows
Putty-Konsole nach erfolgreichem Einloggen
© Uni MS - Dr. Ludger Becker
  • Laden Sie sich das Programm PuTTY herunter.
    Mit einem einfachen Doppelklick auf die Datei putty.exe starten Sie das Programm ohne vorherige Installation.
  • Lassen Sie alle Einstellungen so wie sie sind und geben Sie als "Host Name" den Namen des Datenbankenservers ein:
    ivv5dbsrv04.uni-muenster.de
    Klicken Sie anschliessend auf den unteren Button "Open".
  • Es öffnet sich ein neues Putty-Konsolen-Fenster in dem Sie sich nochmals mit Ihrer Uni-Kennwort und Nutzerpasswort anmelden müssen.
    Befinden Sie sich an einem Poolrechner wird Ihre Uni-Kennung automatisch übernommen.
  • Beim ersten Einloggen werden Sie gefragt, ob Sie dem RSA Schlüssel vertrauen. Hier klicken Sie auf "OK" bzw, tippen "yes". Sollten sie bereits in einem vorherigen Jahr die Vorlesung Datenbanken gehört haben, beachten Sie bitte diese Fehlermeldung.
  • Mit dem Befehl "exit" schließt sich die Putty-Konsole und die erstellte Verbindung wird beendet. Gleiches geschieht beim Schließen des Konsolenfensters durch einen Klick auf das X.

Unter Unix (Mac OS)

Unixstart
Starten eines Terminals an einem Poolrechner
© Uni MS - Dr. Ludger Becker
Loginscreen Unix
Terminal nach erfolgreichem Einloggen
© Uni MS - Dr. Ludger Becker
  • Starten Sie die Konsole bzw. den Terminal.  Auf den Poolrechnern geschieht dieses beispielsweise über die Navigation:
    Anwendungen->Sytemwerkzeuge->Terminal
  • Stellen Sie eine SSH-Verbindung her durch die Eingabe in die Konsole des Befehles:
    ssh ivv5dbsrv04.uni-muenster.de
  • Beim ersten Einloggen werden Sie gefragt, ob Sie dem RSA Schlüssel vertrauen. Hier klicken Sie auf "OK" bzw, tippen "yes". Sollten sie bereits in einem vorherigen Jahr die Vorlesung Datenbanken gehört haben, beachten Sie bitte diese Fehlermeldung.
  • Sollten Sie sich nicht von einem Poolrechner aus einloggen, so müssen Sie ihre Uni-Kennung beim Aufbau der Verbindung mit in dem Befehl angeben. Der modifizierte Befehl lautet dann zum Beispiel für die Nutzerkennung k_knip06:
    ssh k_knip06@ivv5dbsrv04.uni-muenster.de
  • Mit dem Befehl "exit" beenden Sie die Verbindung. Ein zweites "exit" schliesst die Konsole. Gleiches geschieht beim Schließen des Konsolenfensters durch einen Klick auf das X.

Ein neuer RSA-Key

Ssh-Warning
Warnung eines alten RSA-Keys unter Linux
© Uni MS - Dr. Ludger Becker

Sollten sie bereits in einem vorherigen Jahr die Vorlesung Datenbanken gehört haben, so befindet sich vermutlich bereits ein veralteter RSA-Schlüssel auf ihrem Rechner. Studierende, welche die Vorlesung zum ersten Mal hören, sollten dieses Problem nicht haben.
Unter Windows weist PuTTY den Benutzer auf den neuen Schlüssel hin und fragt, ob dieser aktualisiert werden soll. Bestätigen Sie die Aktualisierung einfach.
Unter Linux sieht die Fehlermeldung etwas dramatischer aus. Benutzen Sie einfach den angegebenen Befehl, um den alten RSA-Key zu löschen. Bei einem zweiten Verbindungsaufbau sollte dann alles wie im vorherigen Abschnitt beschrieben funktionieren.

Häufige Fehler

Für den Fall, dass Ihre Einlog-Versuche mit der Fehlermeldung "Access Denied" beantwortet werden: Wegen der dezentral organisierten IT-Infrastruktur kann es vorkommen, dass Ihre Passwort-Informationen noch nicht auf dem Datenbankserver angekommen sind. In diesem Fall reicht dann in der Regel eine Änderung Ihres Passworts im MeinZiv-Portal der Universität aus, um das Problem zu beheben.

Benutzung von PostgreSQL

Erstellen Sie zunächst eine Verbindung zu ivv5dbsrv04.uni-muenster.de wie in dem oberen Abschnitt beschrieben.

Erzeugen und Öffnen einer Datenbank

Psql-Example
Beispieleingabe zum Erzeugen, Öffnen und Löschen einer Datenbank
© Uni MS - Dr. Ludger Becker
  • Beim ersten Arbeiten mit PostgreSQL müssen Sie eine neue Datenbank für sich anlegen. Ausführen von "createdb datenbankname" (von der UNIX-Kommandozeile aus) legt die gewünschte neue Datenbank an. Zwecks Unterscheidung der Datenbanken stellen sie dem Namen einer neuen Datenbank bitte Ihre Nutzerkennung voran (z.B. "k_knip02TestDB").
  • Der anschließende Aufruf "psql datenbankname" erzeugt eine Verbindung zu der Datenbank mit dem Namen "datenbankname" (z.B. psql k_knip02TestDB). Ein Aufruf von "psql" ohne Parameter stellt automatisch eine Verbindung zu einer Datenbank her, die Ihrem Benutzernamen entspricht, sofern Sie diese vorher angelegt haben. Es sollte selbstverständlich sein, dass Sie bei einem späteren Einloggen direkt mit "psql datenbankname" Ihre Datenbank öffnen können und nicht erneut "createdb datenbankname" aufrufen müssen.
  • Es kann sinnvoll sein für jede Übungsaufgabe eine neue Datenbank anzulegen. Ansonsten müssen Sie vorher den Inhalt Ihrer alten Datenbank löschen.
  • Ausführen von "dropdb datenbankname" (von der UNIX-Kommandozeile aus) löscht die übergebene Datenbank (z.B dropdb k_knip02TestDB). Es wäre sehr freundlich, wenn Sie Datenbanken, die Sie nicht mehr benötigen, löschen könnten.

Spezielle Befehle und Besonderheiten

Innerhalb des PSQL-Interpreters sind folgende Befehle neben der reinen SQL-Syntax von Bedeutung:

  • "\i dateiname" führt die in "dateiname" enthaltenen SQL-Kommandos aus. Dieser Befehl kann also dazu verwendet werden, die im Learnweb bereitgestellten Dateien in eine eigene Datenbank zu übernehmen. Die Dateien müssen dazu vorher auf dem Server gespeichert werden. (siehe nächster Abschnitt).  Sollten Sie Probleme mit der Speicherung haben oder die Datei recht klein sein, so können Sie auch den gesamten Inhalt der bereitgestellten Datei in die Komandozeile kopieren. Markieren und kopieren Sie hierfür einzelne Befehlsblöcke aus der Datei und fügen Sie sie in die Komandozeil ein. Die Befehle werden dann der Reihe nach ausgeführt. Ein Kopieren der gesamten Datei auf einmal kann zu Fehlern führen (Linux-Zeichenlimit).
  • "\dt" zeigt die bisher angelegten Tabellen an
  • "\q" beendet den PSQL-Interpreter
  • "\h" hilft bei der Benutzung von SQL-Kommandos
  • "\?" hilft bei der Benutzung des PSQL-Interpreters

Anmerkung:

Auf Grund von Encoding-Inkompatibilität kann es dazu führen, dass Umlaute nicht als Eingabe akzeptiert werden. Benutzen Sie daher möglichst "ss" statt "ß" bzw. "ue" statt "ü" usw.


Übertragung von sql-Dateien auf den Server

Um größere Datenbanken zu laden, empfiehlt es sich den Befehl "\i dateiname" zu verwenden, da die Linux-Konsole ein Zeichenlimit für den Copy&Paste Befehl hat.  Beispielsweise die Datei Bank-1-loan.sql  der Übungsdatenbank aus der Vorlesung besteht aus 5000 Zeilen und mit Copy&Paste können nur 46 davon auf einmal übertragen werden.
Um den "\i dateiname" Befehl benutzen zu können, muss die Datei vorher auf den Server übertragen worden sein.  Diese Übertragung auf den Server erfolgt hierbei plattformabhängig und wird im Anschluss beschrieben.

I-Befehl
Einfügen aller Einträge einer SQL-Datei in eine Datenbank
© Uni MS - Dr. Ludger Becker
  • Ob die Übertragung geglückt ist, können Sie testen, indem Sie nach der normalen SSH-Verbindung mit dem Server (siehe oberster Abschnitt) den Befehl "ls" in die Konsole eintippen und die übertragene Datei dort angezeigt wird. 
  • Nun können Sie Ihre vorher erzeugte Datenbank öffen "psql datenbankname" und mit dem Befehl "\i dateiname" die Datenbank füllen.
  • Sollte die Datei auf dem Server nicht mehr benötigt werden, so kann diese mit "rm dateiname" wieder entfernt werden.

Unter Windows

Winscp Login
Login-Dialog von WinSCP
© Uni MS - Dr. Ludger Becker
Winscp Edit
Explorer-Fenster nach erfolgreicher Verbindung
© Uni MS - Dr. Ludger Becker

Hier wird wieder ein externes Programm benötigt, wie beispielsweise WinSCP. Die folgende Anleitung bezieht sich auf dieses Programm.

  • Starten Sie WinSCP und wählen Sie in dem Login-Dialog als "Übertragungsprotokoll" SFTP aus. Geben Sie bei "Rechnername" ivv5dbsrv04.uni-muenster.de ein und in die anderen Felder Ihre Uni-Kennung samt Passwort. Anschließend klicken Sie auf "Anmelden" und sollten nach erfolgreicher Verbindung ein Windows-Explorer-ähnliches Fenster sehen. Bei der ersten Verbindung mit WinSCP müssen Sie den RSA-Key einmalig betätigen. 
  • In dieses Fenster können Sie einfach per Drag&Drop Ihre SQL-Datei auf der rechten Seite hinzufügen. Diese wird daraufhin automatisch auf den Server übertragen. Ändern Sie auf der rechten Seite nicht das Verzeichnis, da sonst der Befehl "\i" die Datei nicht findet.

Unter Unix (Mac OS)

Scp Example
Beispiel des scp-Befehles
© Uni MS - Dr. Ludger Becker

Linux-User (und auch Mac-ianer) können am einfachsten den Befehl Secure Copy (scp) verwenden. Angenommen die aus dem Learnweb heruntergeladene SQL-Datei Bank.sql befindet sich unter "/home/username/Downloads" auf Ihrem lokalen System, so kann man diese Datei mit dem folgenden Konsolenbefehl auf den Server übertragen:

scp /home/username/Downloads/Bank.sql wwu_kennung@ivv5dbsrv04.uni-muenster.de:~

Bei der Ausführung des Befehles wird man aufgefordert sein Zugangspasswort einmal einzutippen.


pgcli für PostgreSQL

Für PostgreSQL ist auf dem Server eine Kommandozeilenschnittstelle mit automatischer Vervollständigung und Syntax-Highlighting installiert (pgcli). Mit dem Befehl "pgcli datenbankname" können Sie diese Schnittstelle nutzen. Der Befehl ersetzt "psql datenbankname" aus dem vorherigen Abschnitt. Selbstverständlich können Sie weiterhin die Standardschnittstelle von PostgreSQL verwenden.

Pgcli-Screenshot
Beispiel der pgcli-Schnittstelle
© Uni MS - Dr. Ludger Becker

Übungsdatenbank aus der Vorlesung

Um sich mit PostgreSQL vertraut zu machen, laden Sie sich bitte die Datei bank.sql aus dem Learnweb herunter. Sie enthält die Datenbank, welche in der Vorlesung als "running example" dient. Mit ihr können Sie alle Befehle, die in der Vorlesung vorgestellt wurden, ausprobieren und Ihre Ergebnisse mit denen auf den Folien vergleichen.

  • Stellen Sie eine Verbindung zu dem DB-Server her. Erstellen und öffnen Sie eine leere Datenbank. Die Schritte die hierfür nötig sind wurden in den vorherigen Abschnitten erläutert.
  • Laden Sie den Inhalt der Datei bank.sql in Ihre Datenbank. Dies kann über den spezifischen Befehl von PostgreSQL geschehen (siehe vorheriger Abschnitt) oder über einfaches Einfügen einzelner Befehlsblöcke der Datei mittels "Copy&Paste".
  • Nun ist Ihre Datenbank breit die Befehle aus der Vorlesung entgegen zu nehmen. Der Befehl "SELECT * FROM customer;" liefert beispielsweise das unten stehende Ergebnis.
  • Viel Erfolg beim weiteren Experimentieren. Bei Fragen und Problemen senden Sie bitte eine Mail an Dominik Drees.
Bankausgabe
Beispielausgabe der Übungsdatenbank
© Uni MS - Dr. Ludger Becker