昨日、次のコマンドを使用して、さまざまなPostgreSQLデータベースのバックアップを作成しました。
pg_dump -Fc -d junk -h localhost -p 5434 -U postgres -W > z:\pg_dump\96_junk.dump
データベースごとに個別のバックアップを作成しました。
今日は、次のコマンドを使用して、アップグレードしたデータベースサーバーに復元しようとしています。
pg_restore -h localhost -p 5434 -U postgres -W -C -v z:\pg_dump\96_junk.dump
上記を使用してpg_restore
を実行すると、データベースが復元されたようです。コンソール画面には、一連のSQLステートメントと、このデータベースに対して表示されると予想されるその他のメッセージが表示され、最後に、「PostreSQLデータベースダンプが完了しました」が表示されます。
データベースを確認すると、データベースが存在しません。何が悪いのですか?
採用バージョン情報
バージョン9.6.0で作成されたバックアップ
バージョン9.6.1を使用して復元しようとしています
-d
または--dbname
引数を使用して、開始するDBの名前を指定してみてください。これは私が同じ問題を抱えていたときに私のために働いた。ターゲットDBである必要はないことに注意してください。
pg_restore -h localhost -p 5434 -U postgres -d postgres -W -C -v z:\pg_dump\96_junk.dump
Jen R-Sが言ったように、「-d」オプションを使用すると機能します。
「-d」を使用しない場合にコンソールに表示されていた出力は、予想される動作です。ドキュメントで言う:
pg_restoreは2つのモードで動作できます。データベース名が指定されている場合、pg_restoreはそのデータベースに接続し、アーカイブの内容をデータベースに直接復元します。 それ以外の場合、データベースの再構築に必要なSQLコマンドを含むスクリプトが作成され、ファイルまたは標準出力に書き込まれます。このスクリプト出力は、pg_dumpのプレーンテキスト出力形式と同等です。
データベースが指定されていない場合、pg_restoreはすべてのコマンドを生成し、出力をファイルにリダイレクトして、ファイルを直接実行できます。