2017-08-24 57 views
0

CSV文件是簡單的,看起來像這樣:導入錯誤與Postgress COPY

Name,Channel0,Channel1,Channel2,Channel3,Channel4 
CSBA10,125833,147883,184269,162270,151366 
CSBA20,125533,145883,154269,152270,155365 

表看起來是這樣的:

CREATE TABLE public."csTest" 
(
    idname character varying(200) COLLATE pg_catalog."default" NOT NULL DEFAULT nextval('seqtest'::regclass), 
    channel0 double precision, 
    channel1 double precision, 
    channel2 double precision, 
    channel3 double precision, 
    channel4 double precision, 
    CONSTRAINT "csTest_pkey" PRIMARY KEY (idname) 
); 

查詢看起來是這樣的:

COPY public."csTest" FROM '/file/on/server.csv' DELIMITER ',' CSV; 

所有這些都是通過一個簡單的python腳本完成的,查詢是失敗的,我不知道爲什麼。但是,爲了以防萬一,爲了您的方便,這裏是python代碼。

 conn = psycopg2.connect(
      "host="+host+" port="+port+" dbname="+dbname+ 
      " user="+user+" password="+password+"" 
     ) 

     cur = conn.cursor() 
     cur.execute(query) 
     conn.commit() 
     conn.close() 

Error Message: psycopg2.DataError: invalid input syntax for type numeric: "Channel0"

我缺少什麼?

在此先感謝。

+0

這是失敗的錯誤? –

+0

你想念副本 –

回答

1
COPY public."csTest" FROM '/file/on/server.csv' DELIMITER ',' CSV HEADER; 

應該做的伎倆,因爲它讀取第一行數據,而不是列名,如果你不指定它

更新 也是我預測的問題numeric(10,10)和你的數據 - 也許你的意思是numeric (20,10)或類似的?.. numeric(10,10)將接受0-0.9999999999範圍

+0

好的工作!我把它切換回雙精度,它的工作。 –