ダンプファイルを復元しようとしていますが、エラーが発生しました。
psql:psit.sql:27485: invalid command \N
解決策はありますか?検索しましたが、明確な答えが得られませんでした。
Postgresは、「\ N」をNULL値の代替シンボルとして使用します。ただし、すべてのpsqlコマンドはバックスラッシュ「\」記号で始まります。したがって、おそらくcopyステートメントが失敗しても、ダンプのロードは継続するときに、このメッセージを取得できます。このメッセージは単なる誤報です。 COPYステートメントが失敗する理由のために、前に行を検索する必要があります。
Psqlを「最初のエラーで停止」モードに切り替えてエラーを見つけることは可能です。
psql -v ON_ERROR_STOP=1
バイナリダンプから復元しようとすると、同じエラーメッセージが表示されます。 pg_restore
を使用してダンプを復元し、\N
エラーを完全に回避しました。
pg_restore -c -F t -f your.backup.tar
スイッチの説明:
-f, --file=FILENAME output file name -F, --format=c|d|t backup file format (should be automatic) -c, --clean clean (drop) database objects before recreating
私はこれが古い投稿であることを知っていますが、別の解決策に出会いました:postgisが新しいバージョンにインストールされていなかったため、pg_dumpで同じエラーが発生しました
私も過去にこのエラーに遭遇しました。 Pavelは正しいです。通常、pg_restoreによって作成されたスクリプト内の何かが失敗していることを示しています。すべての「/ N」エラーのため、出力の最上部に実際の問題は表示されません。私は提案します:
pg_restore --table=orders full_database.dump > orders.dump
)orders.dump
を開いて、記録)私の場合、「hstore」拡張機能がまだインストールされていなかったため、最上部でスクリプトが失敗していました。宛先データベースにhstoreをインストールし、仕事に戻りました。
--insertsパラメーターを指定したINSERTSステートメントを使用して、ダンプを生成できます。
Postgresql-(ご使用のバージョン)-postgis-scriptsをインストールします
今日も同じことが起こりました。 --insertsコマンドでダンプすることで問題を処理しました。
私がやることは:
1)挿入を伴うpg_dump:
pg_dump dbname --username=usernamehere --password --no-owner --no-privileges --data-only --inserts -t 'schema."Table"' > filename.sql
2)psql(ダンプされたファイルを復元する)
psql "dbname=dbnamehere options=--search_path=schemaname" --Host hostnamehere --username=usernamehere -f filename.sql >& outputfile.txt
注-1)出力ファイルを追加すると、インポートの速度が向上することを確認してください。
注-2)psqlでインポートする前に、正確に同じ名前と列でテーブルを作成することを忘れないでください。
私の最近の経験では、実際の問題がエスケープ文字や改行とは関係がないときにこのエラーが発生する可能性があります。私の場合、データベースAからダンプを作成しました。pg_dump -a -t table_name > dump.sql
そしてそれをデータベースBに復元しようとしていたpsql < dump.sql
(もちろん適切なenv変数を更新した後)
最終的にわかったのは、ダンプがdata-only
(-a
オプションであるため、テーブル構造が明示的にダンプの一部ではないため)がスキーマ固有であるということです。つまり、ダンプを手動で変更しないと、schema1.table_name
から生成されたダンプを使用してschema2.table_name
を設定できませんでした。手動でダンプを変更するのは簡単で、スキーマは最初の15行程度で指定されます。
SUSE 12でpostgreSQL 10を使用している場合、ディスクスペースを増やすことでinvalid command \N
エラーを解決しました。ディスク容量の不足がエラーの原因でした。 df -h
出力でデータのファイルシステムを見ると、ディスク領域が不足しているかどうかを確認できます。ファイルシステム/マウントが100%使用されている場合、psql -f db.out postgres
のようなことを行った後( https://www.postgresql.org/docs/current/static/app-pg-dumpall.htmlを参照 )ディスクの空き容量を増やす必要がある可能性があります。
ほとんどの場合、解決策はpostgres-contrib
パッケージをインストールすることです。