PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie importiere ich eine CSV-Datei in postgresql, der bereits IDs zugewiesen sind?

Eine serial Spalte zieht standardmäßig nur die nächste Zahl aus einer Folge . Wenn Sie einen Wert hineinschreiben, wird der Standardwert nicht übernommen. Sie können einfach COPY zum Tisch (siehe die Antwort von @Saravanan ). ) und aktualisieren Sie dann die Sequenz entsprechend. Einer Vorgehensweise:

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

tbl_id die fortlaufende Spalte der Tabelle tbl ist , die aus der Sequenz tbl_tbl_id_seq gezogen wird (Standardname).

Am besten in einer einzelnen Transaktion bei gleichzeitiger Belastung.

Beachten Sie, dass hier kein Off-by-1-Fehler vorliegt. Pro Dokumentation:

Fettdruck von mir.