2012-12-04 6 views
10

私はデータベース 'mydatabase'をコマンドラインからテキストファイル 'mydatabase.sql'にダンプしています。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" 

Thas 'going nice。 しかし、多くの試行の後、私はpg_restoreをデータでデータベースに戻すことはできません。
しかし、私は、このデータベース内のすべてのテーブルを削除した場合、私はでそれを行うことができます。これのにすべてのデータを回復

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

。 問題は、私はむしろ pg_restore.exe必要があるだろう、私はVBNET /シェル経由pgslを実行できないということですこれは私の試みです:

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

...私が取得メッセージ:

C :\ Users \ User 1> "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 " 無効なバイナリ" C:/ Program Files(x86)/PostgreSQL/9.1/bin/pg_restore.exe " pg_restore.exe:[アーカイバ]入力ファイルは、有効なアーカイブ

復元する前に、サーバー上に空のデータベース 'mydatabase'があります(テーブルなし)。 pg_dumpでダンプされ、純粋なコマンドラインまたはVBNET /シェルで使用できるように、明らかに適切なデータが含まれている 'mydatabase.sql'を使ってpg_restoreを動作させるには、何か助けてください。

答えて

11

pg_dumpに-F tフラグを指定してください。これはpg_dumpにバックアップをtar形式で作成するよう指示します。これは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

です。その仕事の:)非常にありがとう! –