postgresql - 在字符串值中导入带逗号的 CSV

标签 postgresql csv postgresql-8.4 postgresql-copy

我正在尝试将一个普通的 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 文件。对于 Postgres 9.1 或更新版本,使用:

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

无论如何,CSV 格式的默认分隔符是逗号 (,)。 More in the manual .
对于 PostgreSQL 8.4 或更早版本:

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

关于postgresql - 在字符串值中导入带逗号的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10001651/

相关文章:

postgresql - 在 Postgresql 中使用脚本创建 1000 个表

postgresql - 根据另一个查询返回的条件在 postgres 中触发不同的查询

ruby-on-rails - 使用 postgres 在 ruby​​/rails 中准备好语句

ruby-on-rails - 在公寓 gem 中复制租户

javascript - Highcharts 解析的深入分析未显示在页面上,但显示在控制台中

java - 如何在 CSV jasper-reports 6.5 中将逗号切换为分号

csv - 加载值字段包含逗号和特殊字符的 csv 文件时 Hadoop Pig "Load"问题

sql - 在 PostgreSQL 表中使用模式名称作为外键

PostgreSQL 和文字游戏

PostgreSQL:如何使用 generate_series() 找出列中缺失的数字?