pg_restore: [archiver] hat keine magische Zeichenfolge im Dateikopf gefunden

13

Ich verwende PostgreSQL 9.1 und möchte Sicherungsdateien wiederherstellen, die generiert wurden mit pg_dump:

sudo pg_dump -h 127.0.0.1 -U postgres --clean --inserts -E UTF8 -f out.sql database_name

Dieser Befehl generiert eine gültige SQL-Datei, die mit dem Löschen vorhandener Datenbankobjekte beginnt, dann alle Tabellen generiert, indiziert, sequenziert usw. und schließlich Daten einfügt.

Wenn ich versuche, die generierte Sicherungsdatei wiederherzustellen mit: (Zeilenumbrüche nur zu Anzeigezwecken hinzugefügt)

sudo pg_restore 
    -d database_name -h 127.0.0.1 -U postgres
    --format=c --clean --create out.sql

es schlägt fehl und druckt:

pg_restore: [archiver] did not find magic string in file header

Was ist der Grund dafür?

Maja
quelle

Antworten:

19

Sie stellen mit wieder her, pg_restore --format=c ...aber das pg_dumpwurde nicht erledigt --format=c, sondern mit dem Standardformat im Klartext .

Von der pg_dumpManpage:

  -F format, --format=format
       Selects the format of the output.  format can be one of the
       following:

       p, plain
           Output a plain-text SQL script file (the default).

Ein Speicherauszug im Nur-Format sollte direkt in das psqlBefehlszeilentool eingegeben werden. Er pg_restoreweiß nicht, was er ist. Dies ist der Grund für diese Fehlermeldung: Im Dateikopf wurde keine magische Zeichenfolge gefunden .

Sie können die Dump-Datei mit more out.sqlin der Shell direkt anzeigen und sehen lesbare SQL-Befehle. Stellen Sie es mit wieder her psql -f out.sql [other options]. Möglicherweise möchten Sie zuerst die Zieldatenbank erstellen, da die --createOption im pg_dumpAufruf nicht vorhanden ist .

Auf der anderen Seite können Sie den Speicherauszug erneut aufrufen und --format=cseine Optionen erweitern. Dann wäre das Gegenteil: pg_restoreMuss verwendet werden, um eine Dump-Datei im benutzerdefinierten Format zu interpretieren.

Daniel Vérité
quelle
0

Ein mögliches Problem ist, dass Ihre Datendatei abgeschnitten ist. Überprüfen Sie, ob Sie die vollständige Datei herunterladen, indem Sie die Dateigrößen vergleichen.

Sterling Cobb
quelle
0

Wenn Sie git-lfs verwenden, stellen Sie sicher, dass Sie die tatsächliche Datei und nicht den Zeiger haben!

mehmet
quelle