如何解决将多个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 举报,一经查实,本站将立刻删除。