Dietmar
27. Oktober 2021 um 10:20
1
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!!!
castorp
27. Oktober 2021 um 11:50
2
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;
Dietmar
27. Oktober 2021 um 13:35
3
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
castorp
27. Oktober 2021 um 13:54
4
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
castorp
2. November 2021 um 08:13
6
Ich würde große Dateien unter Windows nicht über TYPE zu psql
schicken. psql -f dateiname.sql
ist da deutlich stabiler.
system
Geschlossen,
1. Januar 2022 um 08:14
7
Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.