7

簡単な CSV を Postgres 8.4 データベースにインポートしようとしています。

ここに表があります:

CREATE TABLE public.sample (
  a VARCHAR, 
  b VARCHAR
) WITHOUT OIDS;

CSV ファイルのサンプルは次のとおりです。

"foo","bar, baz"

クエリ:

COPY sample FROM '/tmp/sample.csv' USING DELIMITERS ',';

例外をスローします:

ERROR:  extra data after last expected column
CONTEXT:  COPY sample, line 1: ""foo","bar, baz""

しかし、まあ、CSV の解析はロケット科学ではなく、ソースの CSV ファイルを再フォーマットしないと解決できないのではないかと思います。

入力はサードパーティからのもので、形式を変更できません。
(インポートする前に区切り文字を変更する前処理ができることを理解しています。)

最終的な解決策:

COPY sample FROM '/tmp/sample.csv' WITH DELIMITER ',' CSV;

もともとhttps://stackoverflow.com/a/9682174/251311から取得したもので、ドキュメント ページはhttp://www.postgresql.org/docs/8.4/static/sql-copy.htmlです。

4

1 に答える 1

8

明らかに、テキスト形式でインポートしようとすると、CSV ファイルが作成されます。Postgres 9.1 以降の場合は、次を使用します。

COPY sample FROM '/tmp/sample.csv' (FORMAT csv);

とにかく、CSV 形式のデフォルトの区切り文字はコンマ ( ,) です。詳しくはマニュアルをご覧ください。
PostgreSQL 8.4 以前の場合:

COPY sample FROM '/tmp/sample.csv' CSV;
于 2012-04-03T21:41:04.177 に答える