尝试将csv文件导入postgresql时,"最后一个预期列之后的额外数据"

Fre*_*mou 38 csv postgresql postgresql-9.3

我尝试将CS​​V文件的内容复制到我的postgresql数据库中,我收到此错误"在最后一个预期列之后的额外数据".

我的CSV内容是

    agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone
100,RATP (100),http://www.ratp.fr/,CET,,
Run Code Online (Sandbox Code Playgroud)

和我的postgresql命令是

COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';
Run Code Online (Sandbox Code Playgroud)

这是我的桌子

CREATE TABLE agency (
    agency_id character varying,
    agency_name character varying NOT NULL,
    agency_url character varying NOT NULL,
    agency_timezone character varying NOT NULL,
    agency_lang character varying,
    agency_phone character varying,
    agency_fare_url character varying
);

     Column      |       Type        | Modifiers 
-----------------+-------------------+-----------
 agency_id       | character varying | 
 agency_name     | character varying | not null
 agency_url      | character varying | not null
 agency_timezone | character varying | not null
 agency_lang     | character varying | 
 agency_phone    | character varying | 
 agency_fare_url | character varying | 
Run Code Online (Sandbox Code Playgroud)

Mla*_*lac 35

现在你有7个字段.

您需要将CSV中的这6个字段映射到表中的6个字段中.

当你拥有它时,你不能只从csv中映射3个字段,就像你一样:

\COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';
Run Code Online (Sandbox Code Playgroud)

csv文件中的所有字段都需要映射到命令的副本中.

并且由于您定义了csv ,分隔符是默认的,因此您无需将其放置.


sha*_*ker 6

不确定这算不算答案,但我只是用一堆 CSV 文件来解决这个问题,发现只需在 Excel 中打开它们并重新保存而不进行任何更改,错误就会消失。IOTW 源文件中可能存在一些不正确的格式,Excel 可以自动清除这些格式。

  • 只是一句警告。在 Excel 中打开内容可以改变一切。是的,它可能会修复这个错误,但它也会使任何看起来像时间戳的东西成为日期,四舍五入所有长小数以及 Micro$oft 认为可能有用的任何其他东西。 (2认同)