使用递增 id 将多个 CSV 文件复制到 postgres

Copy multiple CSV files into postgres with incrementing id

我有多个 CSV 文件,而且我每天都会收到新文件。应定期将每个文件中的数据添加到 postgres 数据库中。问题是每个 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 


我认为你唯一的机会是将文件复制到临时 table,然后将数据从那里复制到真实 table:

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。