2012-12-04 8 views
10

Ich bin dumping meine Datenbank 'Mydatabase' in eine Textdatei 'Mydatabase.sql' über die Befehlszeile.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" 

Das geht gut. Aber nach vielen Versuchen kann ich keine pg_restore diese Datei zurück zur Datenbank mit Daten.
Aber wenn ich alle Tabellen in dieser Datenbank löschen ich es mit tun können: Dies erholen die alle Daten

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

. Problem ist, dass ich nicht PGsl durch VBNET/Shell ausführen kann, so würde ich eher pg_restore.exe brauchen Dies ist mein Versuch:

"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" 

... wo ich Nachricht erhalten:

C : \ Benutzer \ Benutzer 1> "C:/Programmdateien (x86)/PostgreSQL/9.1/bin/pg_restore.exe" -i -h localhost -p 5432 -U postgres -d "mydatabase" -v "C: \ Benutzer \ Benutzer 1 \ Desktop \ mydatabase.sql " ungültige Binärdatei" C:/Programme (x86) /PostgreSQL/9.1/bin/pg_restore.exe " pg_restore.exe: [Archiver] Eingabedatei scheint nicht zu sein a gültig Archiv

Bevor ich versuche, wiederherzustellen, habe ich leere Datenbank 'Mydatabase' auf dem Server (ohne Tabellen). Bitte helfen Sie pg_restore mit 'mydatabase.sql' zu arbeiten, die mit pg_dump gedumpt wird und offensichtlich eine korrekte Daten enthält, so dass ich es durch reine Befehlszeile oder VBNET/Shell verwenden kann.

Antwort

11

Geben Sie in Ihrem pg_dump das Flag -F t an. Dadurch wird pg_dump angewiesen, das Backup im tar-Format zu erstellen, das für die Wiederherstellung über pg_restore geeignet ist.

"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

Ich sehe. Das ist Arbeit :) Vielen Dank! –