2012-12-04 19 views
10

Sto scaricando il mio database "mydatabase" in un file di testo "mydatabase.sql" tramite la riga di comando.Howto pg_restore

"C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_dump.exe " --host localhost --port 5432 --username "postgres" --no-password --verbose --file "C:\Users\User 1\Desktop\mydatabase.sql" "mydatabase" 

Si sta andando bene. Ma dopo molti tentativi non riesco a fare un pg_restore di quei file al database con i dati.
Ma se elimino tutte le tabelle nel database posso farlo con:

psql -f "C:\Users\User 1\Desktop\mydatabase.sql" "mydatabase" "postgres" 

Questa recuperare di tutti i dati. Il problema è che non riesco a correre PGsl attraverso VBNET/guscio così avrei preferito bisogno pg_restore.exe Questo è il mio tentativo:

"C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_restore.exe " -i -h localhost -p 5432 -U postgres -d "mydatabase" -v "C:\Users\User 1\Desktop\mydatabase.sql" 

... dove ricevo un messaggio:

C : \ Users \ User 1> "C:/Programmi (x86) /PostgreSQL/9.1/bin/pg_restore.exe" -i -h localhost -p 5432 -U postgres -d "mydatabase" -v "C: \ Utenti \ Utente 1 \ Desktop \ mydatabase.sql " binario non valido" C:/Programmi (x86) /PostgreSQL/9.1/bin/pg_restore.exe " pg_restore.exe: il file di input [archiver] non sembra essere un valido archivio

Prima di provare a ripristinare ho database vuoto 'mydatabase' sul server (senza tabelle). Si prega di aiuto per ottenere pg_restore che lavora con 'mydatabase.sql' che viene scaricato con pg_dump e che ovviamente contiene dati corretti in modo da poterlo utilizzare tramite pura riga di comando o VBNET/shell.

risposta

11

Nel proprio pg_dump, specificare il flag -F t. Questo dice a pg_dump di creare il backup in formato tar, che è adatto per il ripristino tramite pg_restore.

"C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_dump.exe " --host localhost --port 5432 --username "postgres" --no-password --verbose -F t --file "C:\Users\User 1\Desktop\mydatabase.sql" "mydatabase" 
+0

Vedo. Quel lavoro è :) Grazie mille! –