コマンドラインからデータベース「mydatabase」をテキストファイル「mydatabase.sql」にダンプしています。
"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"
ニース行きます。しかし、何度も試行した後、それらのファイルをデータとともにデータベースにpg_restoreすることはできません。
しかし、このデータベースのすべてのテーブルを削除すると、次のようにできます。
psql -f "C:\Users\User 1\Desktop\mydatabase.sql" "mydatabase" "postgres"
これにより、すべてのデータが回復します。問題は、VBNET/Shellを介してpgslを実行できないため、pg_restore.exeが必要になることです。これは私の試みです。
"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:[archiver]入力ファイルが有効なアーカイブではないようです
復元を試みる前に、サーバー上に空のデータベース「mydatabase」があります(テーブルなし)。 pg_dumpでダンプされ、明らかに適切なデータが含まれている「mydatabase.sql」でpg_restoreを機能させるために、助けを借りてください。純粋なコマンドラインまたはVBNET/Shellで使用できます。
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"