我尝试将CSV文件的内容复制到我的postgresql数据库中,我收到此错误"在最后一个预期列之后的额外数据"。
我的CSV内容是
agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone
100,RATP (100),http://www.ratp.fr/,CET,,
我的postgresql命令是
COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';
这是我的表
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 |
答案 0 :(得分:31)
现在你有7个字段。
您需要将CSV中的这6个字段映射到表中的6个字段中。
当你拥有它时,你不能只从csv中映射3个字段,如下所示:
\COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';
csv文件中的所有字段都需要在命令副本中映射。
由于你定义了csv ,
分隔符是默认的,你不需要把它。
答案 1 :(得分:0)
不确定这是否可以作为答案,但是我只是用一堆CSV文件将其击中,发现只需在Excel中打开它们并重新保存它们而没有任何更改,该错误就会消失。 IOTW可能会导致Excel能够自动清除源文件中的某些格式错误。
答案 2 :(得分:-1)
我尝试了你的例子,它工作正常,但....
psql命令行中的命令缺少\
database=# \COPY agency FROM 'myFile.txt' CSV HEADER DELIMITER ',';
下次请加入DDL
我从csv标头
创建了DDL