私は多くの異なるデータベース(SQL Server、Oracle、IBM db2)を操作しましたが、バックアップがあれば、データを復元するためにRESTOREコマンドを実行するだけで十分です。
私はPostgreSQLの初心者です。
ドキュメントとこの質問で私が見るように https://stackoverflow.com/questions/35289888/restore-postgres-database-dump データベースの正常な復元のために:
* DROP database
* CREATE database
* execute psql dbname < dumpfile
(他のすべてのデータベースの動作に基づいて)復元したい場合にデータベースを削除して再作成する必要があると本当に混乱していますか? Postgresが実際にそのように実装されていると私が信じるのは難しいです。
pg_dump
オプションを指定して--clean
を実行すると、生成されたSQLダンプには、ダンプされたすべてのオブジェクトのdrop
ステートメントが含まれます(カスタム形式とpg_restore
を使用する場合、ダンプするときにこれを決定する必要はありませんが、復元するとき)。
ただし、ターゲットデータベースに、ソースに含まれていないテーブル(または他のオブジェクト)が含まれている場合、それらはnotが削除されます。
pg_dump --clean
(またはpg_restore --clean
)の使用は、Oracleのimpdp
でのTABLE_EXISTS_ACTION=REPLACE
の使用とほぼ同じ動作です。それでも、ソースの一部ではないテーブルは削除(置換)されません。
ソースに含まれていないターゲット内のテーブルが存在しないようにするために、ダンプをインポートする前にデータベース全体を単純に削除することがよくあります。ただし、これは(--clean
オプションを使用する場合)実際には必要ありません。