私は新しいデータベースに復元したい特定のテーブルのバックアップを作成しました:
call pg_dump -Fc -h server -d database -U user -p password -v -f dump.sql -t public.table1 -t public.table2
そして、私は問題ありません。
次に、pg_restoreで次のコマンドを使用して新しいデータベースを作成し、ダンプを復元します。
call pg_restore --clean --create -d temp -h server -p password -U user dump.sql
これにより、「データベース一時が存在しません」エラーが発生します。これでデータベースが作成され、私が理解している限り復元されているはずです。
ただし、「temp」データベースを手動で作成して実行します。
call pg_restore --clean --create -d temp -h server -p password -U user dump.sql
これは続きますが、テーブルを作成せず、エラー「relation table1
"および" relation table2
"は存在せず、2つのテーブルに対応するid_sewuencesを作成するだけです。
私が実際に必要なのは、新しいデータベースを手動で作成する必要がなく、バックアップ内のすべてのテーブルがpg_restoreを使用して新しいデータベースに復元されることです。
call pg_restore --clean --create -d temp -h server -p password -U user dump.sql
私が理解しているように。
助けてください、非常にイライラします
--create
と-d
を一緒に使用する場合、-d
の引数はnot作成するデータベースの名前であり、接続する既存のデータベースの名前です。 CREATE DATABASE
ステートメントを実行します。これは、まだ別のデータベースに接続していないとデータベースを作成できないためです。
これは 文書化 として:
このオプションを使用すると、-dで指定されたデータベースは、最初のDROP DATABASEコマンドとCREATE DATABASEコマンドを発行するためにのみ使用されます。すべてのデータは、アーカイブに表示されるデータベース名に復元されます。
これがpg_restore
がdatabase tempが存在しないというエラーを出力する理由です
とにかく特定のデータベース名を作成したいので、バックアップからのものではないため、createdb
ステップを復元手順に追加する必要があります。
2番目の問題の場合、それは完全に異なる質問であり、完全なエラーメッセージなしで発生する理由を推測することは困難です。
また、-p
の後にパスワードではなくポート番号が続くことにも注意してください。