入力ファイルはテキスト形式のダンプのようです。psqlを使用してください


95

を使用してバックアップを取ります

pg_dump db_production > postgres_db.dump

次に、scpを使用してローカルホストにコピーします。

ローカルデータベースにインポートすると、エラーが発生します

pg_restore: [archiver] input file appears to be a text format dump. Please use psql.

コンマ行を使用して

pg_restore -d db_development postgres_db.dump

回答:


138

pg_dumpドキュメントから:

mydbというデータベースをSQLスクリプトファイルにダンプするには

$ pg_dump mydb > db.sql

このようなスクリプトをnewdbという名前の(新しく作成された)データベースに再ロードするには

$ psql -d newdb -f db.sql

データベースをカスタム形式のアーカイブファイルにダンプするには:

$ pg_dump -Fc mydb > db.dump

データベースをディレクトリ形式のアーカイブにダンプするには:

$ pg_dump -Fd mydb -f dumpdir

アーカイブファイルをnewdbという名前の(新しく作成された)データベースに再ロードするには:

$ pg_restore -d newdb db.dump

pg_restoreドキュメントから:

mydbというデータベースをカスタム形式のダンプファイルにダンプしたと仮定します。

$ pg_dump -Fc mydb > db.dump

データベースを削除してダンプから再作成するには:

$ dropdb mydb
$ pg_restore -C -d postgres db.dump

2
pg_restoreを実行すると、pg_restoreが表示されます。[archiver]入力ファイルはテキスト形式のダンプのようです。psqlを使用してください。
Haseeb Ahmad 2016

データベースの復元に使用するのはどれですか?
Haseeb Ahmad 2016

76
これは質問に答えません
dopatraman 2017

1
テキストファイルのチェックアウトから復元する方法についてserverfault.com/questions/260607/...
CHRS

7
IMOこの投稿には、答えがわかりにくい詳細が少し多すぎます。著者が指摘しなかったことは、「-F」パラメーターのpg_dumpドキュメントには、デフォルトの形式(「p」/「plain」)がpg_restoreに適しているとは記載されていないということです。pg_restoreでは、pg_dumpを「c」、「d」、または「t」形式で使用する必要があります。
マット

62

上記の答えは私にはうまくいきませんでした、これはうまくいきました:

psql db_development < postgres_db.dump


短くて甘い。私のためにも働いた。
瞳孔

14

私が使用したリモートホストから復元しようとすると、

psql -U username -p 5432 -h 10.10.10.1 -d database < db.dump

うまくいきました。そして、リモートでない場合は、次のコマンドだけが機能しました。

psql -d database < db.dump

9

pg_dumpと互換性のあるを使用してバックアップを作成するには、ダンプを作成するときpg_restore--format=custom/を使用する必要があり-Fcます。

ドキュメントから:

pg_restoreへの入力に適したカスタム形式のアーカイブを出力します。

したがって、pg_dumpコマンドは次のようになります。

pg_dump --file /tmp/db.dump --format=custom --host localhost --dbname my-source-database --username my-username --password

そしてあなたのpg_restore命令:

pg_restore --verbose --clean --no-acl --no-owner --host localhost --dbname my-destination-database /tmp/db.dump

6

私にとって、それはこのように機能しています。 C:\ Program Files \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432-dダミー-fC:\ Users \ Downloads \ d2cm_test.sql


2
シンプルで役立つ答え!
RaxWeber20年

1
ありがとう@RAJNISHYADAV。
アミット

1

pg_dumpを-Fpとともに使用してプレーンテキスト形式でバックアップする場合は、次のコマンドを使用します。

cat db.txt | psql dbname

dbnameという名前ですべてのデータをデータベースにコピーします


0

完全なDBダンプがある場合:

PGPASSWORD="your_pass" psql -h "your_host" -U "your_user" -d "your_database" -f backup.sql

ただし、スキーマを個別に保持している場合、それは機能しません。次に、と同様に、データ挿入のトリガーを無効にする必要がありますpg_restore --disable-triggers。その後、これを使用できます。

cat database_data_only.gzip | gunzip | PGPASSWORD="your_pass" psql -h "your_host" -U root "your_database" -c 'SET session_replication_role = replica;' -f /dev/stdin

ちなみに、これはpostgresの非常に残念な欠点だと思います。でダンプを作成するデフォルトの方法は、pg_dumpと互換性がありませんpg_restore。ただし、いくつかの追加のキーがあれば、そうです。WTF?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.