导入字符串值中带有逗号的CSV



我正试图将一个微不足道的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

很明显,当您尝试将CSV文件导入为文本格式时,您有一个CSV文件。对于Postgres 9.1或更新版本,请使用:

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

CSV格式的默认分隔符无论如何都是逗号(,)。手册中有更多内容
对于PostgreSQL 8.4或更高版本:

COPY sample FROM '/tmp/sample.csv' CSV;

相关内容

  • 没有找到相关文章

最新更新