微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将多个CSV文件复制到ID递增的postgres中

如何解决将多个CSV文件复制到ID递增的postgres中

我有多个CSV文件,而且每天都有新文件。每个文件中的数据应定期添加到postgres DB中。问题是每个CSV文件都有一个带有ID的列。所以在添加第二个文件

copY public."ERROR" FROM 'C:\CSV\error.csv' DELIMITER ',' CSV HEADER;

我已经收到错误

ERROR:  duplicate key value violates unique constraint "ERROR_pkey"
DETAIL:  Key (id)=(0) already exists.
KONTEXT:  copY ERROR,line 2

但是,在数据库中,我仍然需要一个id列作为主键,因此我不能只删除它。有没有一种方法可以自动生成一个递增ID?

例如,像这样。

CSV File 1:                        CSV File 2:
id  error           value          id   error           value
0   engine          10             0    engine          22
1   lamp_dashboard  15             1    door_left       13
2   door_left       17             2    indicator_left  37
3   boot            8              3    indicator_right 65
4   front_wheel     13             4    cockpit         16

Data in DB:
id  error           value
0   engine          10
1   lamp_dashboard  15 
2   door_left       17
3   boot            8
4   front_wheel     13
5   engine          22
6   door_left       13
7   indicator_left  37
8   indicator_right 65
9   cockpit         16 


解决方法

我认为您唯一的机会是将文件复制到登台表中,然后将数据从那里复制到真实表中

create temporary table import_data
(
  id integer,error text,value integer
);

COPY import_data FROM 'C:\CSV\error.csv' DELIMITER ',' CSV HEADER;

insert into public."ERROR"  (error,value)
select error,value
from import_data;
,

我认为可以通过指定要复制的CSV列(不带ID)来解决。这样就应该自动增加ID。 https://stackoverflow.com/a/29963692/8021888

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。