2017-08-24 58 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

好的工作!我把它切换回双精度,它的工作。 –