Ich habe pg_dump auf einem Computer verwendet und die Ergebnisdatei in eine andere kopiert, wo ich versucht habe, sie wiederherzustellen. Ich glaube, das Schema ist dasselbe. Ich bekomme jedoch:
pg_restore: [archiver] input file does not appear to be a valid archive
Ich habe folgende Operationen durchgeführt:
pg_dump -a -f db.txt dbname
und:
pg_restore -a -d dbname db.txt
Was könnte falsch sein?
postgresql
gruszczy
quelle
quelle
Antworten:
Sie speichern im einfachen SQL-Format, das für die Eingabe in psql entwickelt wurde. Dies wird von pg_restore nicht erkannt.
sollte den Trick machen
quelle
psql dbname < db.txt
;)pg_dump
Standardmäßig werden die SQL-Befehle erstellt, die zum erneuten Erstellen der Daten erforderlich sind. Um es wiederherzustellen, müssen Sie nur die Datei als Eingabe aufrufenpsql
(nichtpg_restore
).pg_restore
ist nur für das binäre (nicht standardmäßige und weniger üblichenicht empfohlene) Format von zu verwendenpg_dump
. Lesen Sie die Dokumente .Update: Die
pg_dump
Binärformate (-Fc
-Ft
), die verwendet werden sollen,pg_restore
sind in Ordnung und bieten zusätzliche Flexibilität. Aber sie sind weniger standardisiert (nicht SQL), weniger geeignet für den Import aus einigen Tools (z. B. einem PHP-Frontend) oder die Bearbeitung mit einem Texteditor und ein bisschen weniger portabel für andere Versionen und sogar andere Datenbanken. Für Backups würde ich mich an das normale Standardformat halten. In anderen Szenarien kann die Option binary + pg_restore gleich oder passender sein.Beachten Sie , dass in Postgresql im typischen Szenario die Sicherung normalerweise durch pg_dump ( normal ) und die Wiederherstellung mit dem Standardbefehlszeilenclient ( psql ) erfolgt.
quelle
Versuchen Sie, die
--format=c
Option an zu übergebenpg_dump
. Dadurch kann espg_restore
wiederhergestellt werden.quelle
pg_restore: [archiver] did not find magic string in file header
so dass dies nicht für einfache SQL-Dumppg_dump --format=c ...> archivefile
, und verwenden Sie dannpg_restore
aufarchivefile
, dann (zumindest , wenn ich es gerade getestet) es funktioniert gut. Vielleicht ist Ihre Datei irgendwie beschädigt? Oder haben Sie einen bestimmten Fehler gefunden?Dies ist, was ich tun würde, um meine alte Datenbank zu sichern und wiederherzustellen
So sichern Sie Ihre Datenbank
So stellen Sie diese Sicherung wieder her
Lesen Sie mehr über pg_dump und pg_restore
quelle
Für Windows-Benutzer versuchen
Klappt wunderbar
quelle
Sie können etwas mit dem MySQL-
SOURCE
Befehl tun :Dann im Postgresql-Terminal:
quelle
cat dumpFileName | psql -h ip -d Datenbankname -U Benutzername -W
quelle
Diese Fehlermeldung könnte auch bedeuten, dass tatsächlich etwas mit der Sicherungsdatei (oder Ihren Vermutungen dazu) nicht stimmt.
In einem Fall hatte ich eine Sicherungsdatei in einen Docker-Container eingehängt und versucht, sie wiederherzustellen, dies schlug jedoch fehl
does not appear to be a valid archive
. Tatsächlich war die Datei leer, weil das Mounten nicht korrekt durchgeführt wurde.quelle