「pg_dumpdatabase_name> backup.sql」を使用してpostgresデータベースのダンプを取得しています。後で、元のデータベース(database_name)にいくつかの変更を加えてから、バックアップファイル(backup.sql)からデータを復元しています。しかし、その結果、データベースは元の状態に復元されず、代わりに元のデータが変更されたデータ(変更された+元の)に追加されます。元の状態に復元したいのですが、すべて削除しますか?データベースの元の状態を提供するため、バックアップファイルから復元する前にデータベースからデータを取得します。または、これを行う他の方法はありますか?
デフォルトの形式 fo pg_dump
はプレーンなので、COPY
ステートメントを作成します。したがって、psql backup.sql
を実行すると、既存のデータに対してそれらのcopy
を実行するだけです。データを書き換えるには、最初にテーブルを削除するか、pg_dump -F c
andpg_restore -c
を削除する必要があります。
警告-どちらの場合も、古いデータを破壊します(これはあなたが望むようですが)
-c --cleanデータベースオブジェクトを再作成する前に、それらをクリーンアップ(ドロップ)します。 (--if-existsが使用されていない限り、宛先データベースにオブジェクトが存在しない場合、これにより無害なエラーメッセージが生成される可能性があります。)
@Craig Ringerが示唆しているように、バックアップからのドロップ/再作成ははるかに簡単でクリーンです。データベースを削除するには、DROP DATABASE au
を実行します-成功するために接続されたユーザーがいないことに注意してください。次に、db:CREATE DATABASE au
を作成し、psql -f backup.sql -d au
を実行する必要があります。