PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come importare un CSV in postgresql a cui sono già assegnati ID?

Un serial colonna disegna solo il numero successivo da una sequenza per impostazione predefinita . Se ci scrivi un valore, il valore predefinito non si avvierà. Puoi semplicemente COPY alla tabella (vedi la risposta di @Saravanan ) e quindi aggiornare la sequenza di conseguenza. Uno modo per farlo:

SELECT setval('tbl_tbl_id_seq', max(tbl_id)) FROM tbl;

tbl_id essendo la colonna seriale della tabella tbl , attingendo dalla sequenza tbl_tbl_id_seq (nome predefinito).

Il migliore in una singola transazione in caso di carico simultaneo.

Nota, non c'è nessun errore off-by-1 qui. Per documentazione:

Enfasi in grassetto la mia.