web-dev-qa-db-ja.com

postgresqlでの区切り文字のエスケープ

Postgresにデータをインポートしようとしています。データフィールドはカンマで区切られています。文字列にはカンマが含まれている場合があります。その場合はエスケープされます。

データ構造:

create table v (a varchar);

データファイル:

bus
'Gat\,\\e\'way_MQB'

インポートコマンド(Linuxでbashから実行)

cat data.csv | psql -d database -c "copy v (a) from stdin with delimiter ',' escape '\\' CSV header"

エラー:

ERROR:  extra data after last expected column

私はかなりの時間の間、この問題に対して戦い、グーグルしてきました、そして私が間違っていることを理解していませんか?

1
arthur

試してください:

cat data.csv | psql -d database -c "copy v (a) from stdin with delimiter ',' escape '\' quote '''' CSV header"

エスケープ文字を指定するときにエスケープする必要はありません。 QUOTEのデフォルトは二重引用符なので、渡す必要があります。

3
hbn