SQL Dump wiederherstellen

Hallo,
vorab zunächst ein mal: ich bin blutiger Anfänger und habe nicht viel Erfahrung mit SQL.

Ich habe einen dump-file und würde die Datenbank gerne wiederherstellen. Leider hakt es hier bei mir bei sehr grundlegenden Problemen. Es handelt sich um eine .sql Datei.

Wenn ich das richtig verstanden habe, brauche ich folgenden Befehl:

psql dbname < dumpfile

Ich habe außerdem auch diesen Befehl gefunden:

psql -U username -f backupfile.sql

Hier stellen sich mir meine ersten Fragen:
Wo lege ich die Datei ab, damit der Befehl darauf zugreifen kann? Jedes Tutorial, das ich finde sieht dies als selbstverständlich an und erklärt diesen Schritt nicht. Muss ich die Datei überhaupt an einem spezifischen Ort ablegen oder reicht der Dateipfad?
Außerdem bekomme ich in der SQL Shell immer die Rückmeldung, dass ich einen Syntaxfehler in “psql” habe. Also der erste Buchstabe nicht richtig wäre.

Ich weiß nicht so recht, was ich falsch mache und komme nicht weiter. Kann mir vielleicht jemand helfen?

Mit vielen Grüßen,
RedSand

es reicht der Dateipfad. Was die Fehlermeldung angeht: ohne diese zu kennen wird es schwer …

psql ist ein Kommandozeilenprogramm, es ist kein SQL Befehl.

Also darfst Du das auch nicht in der “SQL Shell” ausführen, sondern auf der Kommandozeile (“bash” unter Linux, “cmd.exe” oder “Eingabeaufforderung” unter Windows)

Okay, das ist schon mal sehr hilfreich, Danke!

Irgendwie hänge ich aber beim gleichen Problem fest. Hier meine Eingabe:

C:\WINDOWS\system32>cd “C:\Program Files\PostgreSQL\12\bin”

C:\Program Files\PostgreSQL\12\bin>psql -U postgres -h localhost
Passwort für Benutzer postgres:
psql (13.2)
Warnung: Konsolencodeseite (850) unterscheidet sich von der Windows-
Codeseite (1252). 8-Bit-Zeichen funktionieren möglicherweise nicht
richtig. Einzelheiten finden Sie auf der psql-Handbuchseite unter
»Notes for Windows users«.
Geben Sie »help« für Hilfe ein.

postgres=# psql Arbeit < D:/Arbeit/SQL/IBINDO_DATENSATZ_12.sql;
FEHLER: Syntaxfehler bei »psql«
ZEILE 1: psql Arbeit < D:/Arbeit/SQL/IBINDO_DATENSATZ_12.sql;
^

Danke, das ist auch gut zu wissen.

Arbeit ist eine Datenbank, die ich vorher erstellt habe und die auf dem localhost Server angelegt ist

Lasse ich das psql am Anfang weg, so bekomme ich die gleiche Fehlermeldung, nur dass der Pfeil auf das “A” anstatt von dem “p” zeigt

Nochmal: psql ist ein Kommandozeilenprogramm welches Du bereits gestartet hattest. Wenn Du im psql bist, kannst Du nur SQL Befehle oder spezielle “psql Kommandos” ausführen, aber nicht nochmal psql starten.

Also entweder so:

cd "C:\Program Files\PostgreSQL\12\bin"
C:\Program Files\PostgreSQL\12\bin>psql -U postgres -h localhost < D:\Arbeit\SQL\IBINDO_DATENSATZ_12.sql
Passwort für Benutzer postgres:

Also die Eingabedatei direkt beim Aufruf von psql angeben. Da das < von Windows ausgewertet wird, muss auch \ für den Pfadtrenner verwendet werden.

Oder mit dem (psql spezifischen) Kommando \i (für “include”)

cd "C:\Program Files\PostgreSQL\12\bin"
C:\Program Files\PostgreSQL\12\bin>psql -U postgres -h localhost 
Passwort für Benutzer postgres:

psql (13.2)

postgres=# \i D:/Arbeit/SQL/IBINDO_DATENSATZ_12.sql 

Zu beachten ist, dass die psql Kommandos (die mit \ beginnen) nicht mit ; beendet werden dürfen (weil es ja keine SQL Befehle sind)

Da hier der Dateipfad von psql ausgewertet muss man / verwenden

1 Like

Das hat zu dem erwünschten Resultat geführt. Dankeschön!