PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment importer un CSV dans postgresql qui a déjà des identifiants attribués ?

Un serial la colonne ne tire que le numéro suivant d'une séquence par défaut . Si vous y écrivez une valeur, la valeur par défaut ne s'appliquera pas. Vous pouvez simplement COPY à la table (voir la réponse de @Saravanan ), puis mettez à jour la séquence en conséquence. Un façon de faire :

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

tbl_id étant la colonne série de la table tbl , tiré de la séquence tbl_tbl_id_seq (nom par défaut).

Meilleur dans une transaction unique en cas de chargement simultané.

Notez qu'il n'y a pas d'erreur off-by-1 ici. Par documentation :

J'insiste sur moi.