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?
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)
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;
^
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