2009-11-25 8 views
25

Sto provando a ripristinare un database PostgreSQL eseguendo l'SQL creato da pg_dump su un database vuoto.PostgreSQL: ripristino del database dal dump - errore di sintassi

sto ottenendo questo errore:

ERROR: syntax error at or near "\" 
LINE 5211: \. 

linee 5210 e 5211 di lettura:

COPY auth_group (id, name) FROM stdin; 
\. 

Funziona bene sul mio server Linux, dove io uso questo comando:

psql -U dbname < dumpfile.sql

ma su Windows, non sono sicuro di come fare lo stesso, quindi ho cercato di eseguire il file sql del dumpfile dall'utilità di query pgAdminIII.

Quale è il modo consigliato di importare un db da un dump su Windows? Oppure: come può essere risolto questo problema di sintassi?

Qualsiasi aiuto è molto apprezzato!

Martin

risposta

68

L'argomento -f filename su psql leggerà nel file, in modo da non dovete tubo in. Psql dovrebbe essere incluso nella directory bin di PostgreSQL in finestre. In questo modo:

psql -d dbname -U username -f dumpfile.sql 

Potrebbe essere necessario includere un percorso completo del file eseguibile psql se non è sul vostro cammino, e possibile ".exe" metti in psql, quindi è 'psql.exe'.

Assicurati anche di non andare giù nei numeri di versione, ho incontrato problemi di sintassi prima (ad esempio non esportare un database 8.4 e provare a caricarlo in un database 8.1). In tal caso, potrebbe essere necessario modificare manualmente il file di dump.

+1

Questo ha funzionato per me quando si tenta di importare una discarica con Navicat che stava gettando ogni sorta di errori di sintassi. Ha funzionato bene dal terminale di OS X. –

27

provare con psql -d dbname -U utente -f dumpfile.sql

+0

grazie kai, ti darò un voto almeno ...! – Hoff