ですから、これは非常に基本的で簡単にできることだと感じています。
SQL Serverのバックアップと同等のことをしたいのですが。完全な.bakファイルに相当するものを作成し、データベースを元の状態に復元できるようにしたいと考えています。
これまで、PgAdmin4でさまざまな方法を試して、新しく作成したデータベースからバックアップファイルを作成しました。一連のテーブルを作成するスキーマを移行してから、以前に作成したファイルで復元を実行します。復元後に期待するのは、作成したすべてのテーブルが失われることです。データベースは、バックアップを取得したときとまったく同じ状態になっているはずです。
バックアップ/復元でデータを保持/保存しないCreate/Drop Databaseコマンドなど、さまざまなオプションを試しましたが、うまくいきませんでした。
ここで私を手伝ってくれる人はいますか?
コマンドを使用していますpg_dump mydb -Fc > db
およびpg_restore db
。たぶん、私が上で求めていることを実行するために欠けているいくつかの魔法のパラメータがありますか?
試しましたpg_restore --clean db
、同じ結果。
問題は、何もない状態でデータベースを新しく作成し、データベースのバックアップを取り、いくつかのテーブルを作成し、バックアップを復元しても、作成したテーブルがまだ残っていることです。バックアップしたときと同じ状態にdbを置く復元方法が必要です。
回避策として、pgAdminを忘れて、コマンドラインからpg_dump
を実行してください。
25.1を参照してください。バックアップと復元のドキュメントのSQL Dump 。
また、pg_restore
の 手動エントリ から:
-c
--clean
再作成する前に、データベースオブジェクトをクリーン(ドロップ)します。 (
--if-exists
を使用しない限り、宛先データベースにオブジェクトが存在しなかった場合、無害なエラーメッセージが生成される可能性があります。)
-C
--create
復元する前にデータベースを作成します。--clean
も指定されている場合は、接続する前にターゲットデータベースを削除して再作成します。このオプションを使用すると、
-d
という名前のデータベースは、最初のDROP DATABASE
およびCREATE DATABASE
コマンドを発行するためにのみ使用されます。すべてのデータは、アーカイブに表示されるデータベース名に復元されます。
...または、データベースを復元する前に手動で削除するだけです。
から なぜpg_restoreは正常に戻るが実際にはデータベースを復元しないのですか? スタックオーバーフローで、接続時に--dbname
も指定する必要があります。まったく。
pg_dump
は「バックアップダイアログ」、pg_dumpall
は「バックアップサーバーダイアログ」のように思えます。
pg_dump
ユーティリティを使用して、pgAdminはプレーンテキスト形式またはアーカイブ形式でバックアップを作成する簡単な方法を提供します。次に、クライアントアプリケーション(psqlやクエリツールなど)を使用してプレーンテキストのバックアップファイルを復元するか、Postgrespg_restore
ユーティリティを使用してアーカイブされたバックアップを復元します。pg_dump
ユーティリティには、バックアップするすべてのデータベースオブジェクトへの読み取りアクセス権が必要です。
[サーバーのバックアップ]ダイアログを使用して、選択したサーバーを再作成するプレーンテキストスクリプトを作成します。 pgAdminクエリツールを使用してプレーンテキストスクリプトを再生し、サーバーを再作成できます。
--clean
で役立つパラメータpg_restore
は、pgAdmin 4復元ダイアログの[復元オプション]タブにある[復元前にクリーンアップ]オプションに変換されます。
このオプションは、バックアップを復元する前に既存のテーブルやデータを復元プロセスで削除する場合に必要です。