PostgreSQL-kopieeropdracht genereert primaire sleutel-ID

Ik heb een CSV-bestand met twee kolommen: stad en postcode. Ik wil dit bestand kunnen kopiëren naar een PostgreSQL-tabel met de opdracht kopiëren en tegelijkertijd de waarde id automatisch genereren.

De tabel heeft de volgende kolommen: id , stad en postcode \/code>.

Mijn CSV-bestand heeft alleen: stad en postcode \/code>.

28

1 antwoord

De COPY-opdracht zou dat allemaal zelf moeten doen als uw tabel gebruikt een seriële kolom voor de id :

Als er kolommen in de tabel staan ​​die niet in de kolomlijst staan, voegt COPY FROM de standaardwaarden voor die kolommen in.

Dus je zou moeten kunnen zeggen:

copy table_name(city, zipcode) from ...

en de id wordt zoals gebruikelijk gegenereerd. Als u geen seriële kolom voor id (of een handmatig bijgevoegde reeks) hebt, kunt u een reeks met de hand aansluiten, uw COPY doen en vervolgens loskoppelen de reeks.

45
toegevoegd
Zo heb ik gegevens van CSV naar Postgres gekopieerd: \ copy company_infos (email, url, created_at, updated_at) FROM '/Users/john/company_infos_heroku4.csv' WITH (FORMAT csv, HEADER true);
toegevoegd de auteur yaru, de bron