pg_restore:[archiver]はファイルヘッダーにマジックストリングを見つけられませんでした


13

私はPostgreSQL 9.1を使用していて、pg_dump次のコマンドで生成されたバックアップファイルを復元したい:

sudo pg_dump -h 127.0.0.1 -U postgres --clean --inserts -E UTF8 -f out.sql database_name

このコマンドは、既存のデータベースオブジェクトの削除で始まる有効なsqlファイルを生成し、次にすべてのテーブルを生成し、インジタイズ、シーケンスなどを行い、最後にデータを挿入します。

生成されたバックアップファイルを復元しようとすると、次のようになります(表示目的でのみ改行が追加されます)。

sudo pg_restore 
    -d database_name -h 127.0.0.1 -U postgres
    --format=c --clean --create out.sql

失敗して出力します:

pg_restore: [archiver] did not find magic string in file header

その理由は何ですか?

回答:


19

で復元してpg_restore --format=c ...いますが、これはで行われpg_dumpませんでした。--format=cデフォルトのプレーンフォーマットで行われました 。

pg_dumpマンページから:

  -F format, --format=format
       Selects the format of the output.  format can be one of the
       following:

       p, plain
           Output a plain-text SQL script file (the default).

プレーン形式のダンプは、psqlコマンドラインツールに直接入力する必要がpg_restoreあり、それが何であるかを知らないため、このエラーメッセージが表示されますファイルヘッダーにマジックストリングが見つかりませんでした

more out.sqlシェルでダンプファイルを直接見ると、読み取り可能なSQLコマンドが表示されます。で復元しpsql -f out.sql [other options]ます。--createオプションはpg_dump呼び出しに存在しないため、おそらく最初にターゲットデータベースを作成する必要があります。

一方、--format=cオプションを追加してダンプを再度呼び出すことができます。次に、それは逆にpg_restoreなります。カスタム形式のダンプファイルを解釈するために使用する必要があります。


0

考えられる1つの問題は、データファイルが切り捨てられていることです。ファイルサイズを比較して、ファイル全体をダウンロードしているかどうかを確認します。


0

git-lfsを使用する場合は、ポインタではなく実際のファイルを用意してください。

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