2014-01-17 167 views
1

我有一个*.csv文件,我想将其导入到我的数据库中。基本上它看起来像这样:将csv文件导入postgresql

2013.11.07,11:50,1.35163,1.35167,1.35161,1.35163,15 
2013.11.07,11:51,1.35166,1.35173,1.35165,1.35170,21 
2013.11.07,11:52,1.35170,1.35170,1.35163,1.35163,11 

我使用:

DROP TABLE table; 

CREATE TABLE table 
(
id SERIAL primary key, 
Date Date, 
Time Time, 
Open double precision, 
High double precision, 
Low double precision, 
Close double precision, 
Volume bigint 
); 

COPY table FROM 'C:\\Users\\user\\EURUSD1.txt' DELIMITER ',' CSV; 

但是我在日期越来越:

ERROR: invalid input syntax for integer: "07/11/2013" CONTEXT: COPY eurusd_m1, line 1, column id: "07/11/2013"

我真的很感激您对如何解决这个问题的帮助?

+0

文件格式和表格列顺序不匹配列数。您需要创建一个表,就像您要加载的数据一样。 – Abhinav

+0

@Abhinav Thx为您解答!但是,那是不正确的! 'create'语句的列数与csv匹配('id'是'SERIAL')。如果我错了,请告诉我! – user2051347

+1

看着这个错误似乎并非如此。错误表示COPY命令试图将日期数据分配给'id'列。 – Abhinav

回答

3

只是因为id是串行的并不意味着它在加载时被忽略 - 您应该在您的copy语句中指定您的列,例如,

COPY table (Date, Time, Open, High, Low, Close, Volume) 
    FROM 'C:\\Users\\user\\EURUSD1.txt' DELIMITER ',' CSV;