pg_restore: [archiver] non ha trovato la stringa magica nell'intestazione del file


13

Sto usando PostgreSQL 9.1 e voglio ripristinare i file di backup generati con pg_dump:

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

Questo comando genera un file sql valido che inizia con l'eliminazione di qualsiasi oggetto di database esistente, quindi genera tutte le tabelle, le dimensioni, le sequenze e così via e infine inserisce i dati.

Quando provo a ripristinare il file di backup generato con: (interruzioni di riga aggiunte solo a scopo di visualizzazione)

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

fallisce e stampa:

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

Qual è la ragione?

Risposte:


19

Stai ripristinando con pg_restore --format=c ...ma pg_dumpnon --format=cè stato fatto, è stato fatto con il formato normale predefinito .

Dalla 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).

Un dump in formato normale deve essere inviato direttamente allo psqlstrumento da riga di comando, pg_restorenon sa di cosa si tratti, motivo per questo messaggio di errore: non è stata trovata la stringa magica nell'intestazione del file .

Puoi guardare direttamente il file di dump con more out.sqlin shell e vedrai comandi SQL leggibili. Ripristinalo con psql -f out.sql [other options]. Probabilmente vorrai prima creare il database di destinazione, poiché l' --createopzione non è presente pg_dumpnell'invocazione.

D'altra parte, è possibile riavviare il dump aggiungendo --format=calle sue opzioni. Quindi sarebbe il contrario: pg_restoredeve essere usato per interpretare un file di dump nel formato personalizzato.


0

Un possibile problema è che il file di dati viene troncato. Controlla se stai scaricando il file completo confrontando le dimensioni del file.


0

Se usi git-lfs, assicurati di avere il file effettivo, non il puntatore!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.