将CSV复制到Postgres表中-时区类型为“ 1”的时间戳类型的输入语法无效

时间:2019-12-06 01:03:09

标签: sql postgresql csv psql

我正在Postgres中创建一个新表,我想将其从CSV文件复制到其中。 CSV数据如下:

nodeid,usertoken,application,starttime,endtime,count1,count2,count3,count4,count5,utctimestamp,timestamp
ABCDE,84a6f486-97f1-4449-ad63-ae36e51392bd,AB,2019-09-15 00:09:10.365+00,2019-09-15 00:11:57.403+00,1,0,0,1,2,2019-09-15 00:11:57.403+00,2019-09-15 00:11:57.403+00

我这样创建Postgres表:

CREATE TABLE test_table

(

  nodeid text,

  usertoken text,

  application text,

  starttime timestamp with time zone,

  endtime timestamp with time zone,

  count1 integer,

  count2 integer,

  count3 integer,

  count4 integer,

  count5 integer,

  utctimestamp timestamp with time zone,

  "timestamp" timestamp with time zone,

  msgid serial NOT NULL,

  CONSTRAINT test_table_pkey PRIMARY KEY (msgid)

)

WITH (

  OIDS=FALSE

);

然后我使用psql使用此命令,尝试从CSV文件(其中myfilename是csv文件的名称)中复制数据

COPY test_table(nodeid, usertoken, application, starttime, endtime, count1, count2, count3, count4, count5, utctimestamp, timestamp) FROM 'myfilename.csv' DELIMITER ',' CSV HEADER;

我得到了错误:

ERROR:  invalid input syntax for type timestamp with time zone: "1"
CONTEXT:  COPY test_table, line 2, column endtime: "1"

错误似乎表明count1的值正被用作endtime的插入值,但是我不知道为什么会这样

1 个答案:

答案 0 :(得分:0)

感谢@richyen的提示。我以前一直在使用.csv文件,该文件具有其他格式的日期数据。我正在将新的.csv文件复制到Postgres服务器,但是事实证明存在缓存问题,这意味着实际上并未复制新文件。通过使用head filename.csv检查CSV文件,我可以看到此信息。终止我正在使用的linux shell,然后重新开始新的会话,这使我能够成功复制新文件。