Backup und Restore

Ich versuche eine ganz einfache Sicherung und Wiederherstellung einer Datenbank herzustellen und es gelingt nicht.
System: Windows 10
git bash

pg_dump friends > friends.sql

(funktioniert, es wird eine Datei friends.sql erzeugt)

psql friends_2021-10-27 < friends.sql

Ich bekomme folgende Fehlermeldung:
stdin is not a tty

Was bedeutet das? Und was kann ich tun, um eine Datenbank zu sichern und wiederherzustellen?
Bitte nur die allereinfachste Standardvariante!!!

Die Bindestriche im Namen der Datenbank sind ein Problem.

Versuch mal

 psql "friends_2021-10-27" < friends.sql

oder

psql "friends_2021-10-27" -f friends.sql 

Ich würde die DB aber umbenennen, das spart Dir einige Kopfschmerzen auf lange Sicht

 alter database "friends_2021-10-27" rename to friends_2021_10_27;

Vielen Dank für die schnelle Antwort .
Ich habe nun folgende Befehle ausprobiert: Jeweils das Ergebnis darunter.
Wobei manchmal stdin und stdout das Problem sind.
Ist etwa die mit pg_dump erstellte Datei nicht für psql nutzbar?
Es stehen darin auch nicht Zeilen wie INSERT INTO, sondern anstelle dessen COPY
Muss pg_dump mit bestimmten Parametern ausgeführt werden, damit psql funktioniert?

pg_dump friends > friends.sql

funktioniert, Datei wird mit erstellt

psql -f friends.sql > friendscopy

stdout is not a tty

$ psql -f friendscopy < friends.sql

stdin is not a tty

$ psql friendscopy < friends.sql

stdin is not a tty

$ psql “friendscopy” < friends.sql

stdin is not a tty

Ich habe das Gefühl dass mit Deiner Konsole was nicht stimmt. Verwendest Du cmd.exe oder etwas anderes?

Wenn Du -f verwendest, dann ist < friends.sql überflüssig

Also nur

psql -f friends.sql

ohne irgendwelche Umleitungen.

Hallo,
leider habe ich keine Erfahrung mit Postgres unter Windows, dafür aber einige Jahre mit Linux.

Damit hole ich seit Jahren eine gesicherte Datenbank zurück:

cat ${SICHERUNG}| psql -p ${PGPORT} ${DBNAME} 1>import.log

Auf Windows übersetzt wäre das:

TYPE “Sicherungs-Datei”|psql /p %PGPORT% %DBNAME% >import.log

/p %PGPORT% ist eigentlich nicht nötig, damit erinnere ich mich immer daran, das ich die Portnummer ggf. ändern muss.

Denk mal drüber nach, ob du wenn die Sicherung funktioniert, nicht besser noch ein gzip einbaust,
dann werden Sicherungsdateien nicht so groß.

Viel Erfolg
Andreas

Ich würde große Dateien unter Windows nicht über TYPE zu psql schicken. psql -f dateiname.sql ist da deutlich stabiler.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.