2017-10-27 19 views
2

を失敗しました。最初の行はヘッダ含まれていますPSQL COPYは、私は、サーバーでは、このようなテーブルを持っている

name_of_class,status 
'CLASSNAME','old'; 

をそして私はGoogleのサーバーにはpsqlの\コピーを実行しよう:

PGPASSWORD=password psql -d database --username username --port 5432 --host 11.111.111 << EOF 
    BEGIN; 
    \copy example_table(name,status) FROM example.sql DELIMITER ',' CSV Header 
    COMMIT; 
EOF 

私は、このエラーを取得する:

ERROR: new row for relation "example_table" violates check constraint "status_enum" 
DETAIL: Failing row contains (1, 'CLASSNAME', 'old';). 
CONTEXT: COPY example_table, line 2: "'CLASSNAME','old';" 
ROLLBACK 

どのように任意のアイデアこれを解決するには?

+0

制約に違反しないように入力データを修正しましたか? –

答えて

1

ソースcsvが'(一重引用符)を使用してすべての列を引用しているようです。あなたは引用符文字として\copyコマンドは値がnewまたはoldのいずれかであることを確認し、ステータス列に'old'をロードしようとしているオプションQUOTE

を使用していることを指定することができます。余分な引用符は制約に違反します。

\copy example_table(name,status) FROM example.sql DELIMITER ',' CSV Header QUOTE '''' 

4 1は、引用符文字をエスケープするために、実際の引用文字、1を指定し、2はエスケープ引用符文字を囲むため、単一引用符が必要です。

+0

クール、それに気付かなかった。私はあなたの説明どおりにこのエラーが発生しました:エラー:列 "ステータス"のデータがありません\ n コンテキスト:COPY example_table、行3: "" \ n ROLLBACK – longhh

+0

Nvm、それは私です。努力してくれてありがとう、本当にありがとう – longhh

関連する問題