web-dev-qa-db-ja.com

postgres 12で生成されたSQLファイルをpostgres 9.6データベースに復元する方法

データベースを復元しようとしています。データベースのSQLファイルは約4.5 GBなので、エディターで編集できませんでした。 postgres 12で次のコマンドを使用してデータベースをダンプします。

pg_dump -d postgres > backup.sql

しかし、私はpostgres 9.6で同じデータベースが必要です。この目的のために、私はそれを復元する次のコードを書きます

psql -d postgres < backup.sql

this(Error in creation in sequence) のようなエラーが表示されます。しかし、これは与えられた質問の重複したものではありません。エラーメッセージ;

SET
ERROR:  unrecognized configuration parameter "default_table_access_method"
CREATE TABLE
ALTER TABLE
ERROR:  syntax error at or near "AS"
LINE 2:     AS integer
            ^
ERROR:  relation "epicenter.epicenter_gid_seq" does not exist
ERROR:  relation "epicenter.epicenter_gid_seq" does not exist
CREATE TABLE
ALTER TABLE
ERROR:  syntax error at or near "AS"
LINE 2:     AS integer
            ^
ERROR:  relation "public.725_4.5_tur_gid_seq" does not exist
ERROR:  relation "public.725_4.5_tur_gid_seq" does not exist
CREATE TABLE
ALTER TABLE

この質問の答えを見ました。回答ではすでに、sqlファイルは古いバージョンでは機能しないと述べています。しかし、知りたいのですが、このsqlファイルを使用して復元する方法はありますか?

2
Tekson

@jjanesと@JGHにご協力いただき、ありがとうございます。私は一つの解決策を見つけました。まず、次のコマンドを使用してデータベースをバックアップします。

pg_dump -U postgres -h localhost -p 5432 -W earthquake | gzip -c > backup.gz

次に、pgadmin 4から地震データベースを手動で作成します。 backup.gzファイルを取得した後、ターミナルで次のコマンドを使用して復元します。

gzip -d -c backup.gz | sed -e '/AS integer/d' | psql -U postgres -h localhost -p 5432 -W earthquake
2
Tekson