簡體   English   中英

嘗試導入csv文件時發生PostgreSQL錯誤“最后一個預期的列之后的額外數據”

[英]postgresql Error "extra data after last expected column” while trying to import csv file

我有一個包含8列的csv文件,但是我的表有一個6列,其序列與csv文件相同。 以下是csv和表的格式和架構

example.csv

"CH_ID","CH_NAME","ADDRESS_1","ADDRESS_2","POST_CODE","MDSC","UPDATE_TIMESTAMP","DELETED_IND"
    403,"1182463","","10 St Pauls Court","SG2 8DN",1,2017-10-20 12:08:36,"N"

表結構:-

CREATE TABLE ts_ch (
    id int8 NOT NULL DEFAULT nextval('ts_care_homes_seq'::regclass),
    ch_name varchar(200) NULL DEFAULT NULL::character varying,
    address_1 varchar(255) NULL DEFAULT NULL::character varying,
    address_2 varchar(255) NULL DEFAULT NULL::character varying,
    post_code varchar(10) NULL DEFAULT NULL::character varying,
    mdsc_patient int2 NULL,
    PRIMARY KEY (id)
)
WITH (
    OIDS=FALSE
) ;

我嘗試了以下命令:

copy ts_care_homes(id, ch_name, address_1, address_2, post_code, mdsc_patient)  FROM '/var/tmp/care_home_v.csv' csv HEADER

但我收到此錯誤:

最后一個預期列之后的額外數據

您不能使用普通COPY命令僅加載CSV文件的一部分。

實現所需目標的一種方法是使用COPY ... FROM PROGRAM ,例如這樣(假設您已安裝sed ):

COPY laurenz.ts_ch(id, ch_name, address_1, address_2, post_code, mdsc_patient)
FROM PROGRAM
   'sed -e ''s/\(,\([^,]*\)\|\(\("[^"]*"\)*\)\)\{2,2\}$//'' /var/tmp/care_home_v.csv'
(FORMAT csv, HEADER on);

sed命令從CSV文件中sed最后兩列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM