2011-10-27 13 views
27

Ho un file CSV con due colonne: città e codice postale. Voglio poter copiare questo file in una tabella PostgreSQL utilizzando il comando copy e allo stesso tempo generare automaticamente il valore id.Il comando di copia PostgreSQL genera l'ID chiave primaria

La tabella presenta le seguenti colonne: id, city e zipcode.

Il mio file CSV ha solo: city e zipcode.

risposta

43

Il COPY command deve farlo da solo se la tabella utilizza una colonna serial per il id:

Se ci sono colonne della tabella che non sono nella lista delle colonne, COPIA DA inserirà il valori predefiniti per quelle colonne.

Così si dovrebbe essere in grado di dire:

copy table_name(city, zipcode) from ... 

e la id verrà generato come al solito. Se non si dispone di una colonna serial per id (o una sequenza collegata manualmente), è possibile collegare una sequenza a mano, eseguire la COPIA e quindi scollegare la sequenza.

+0

Ecco come ho copiato i dati da CSV a Postgres: \ copy company_infos (email, url, created_at, updated_at) FROM '/Users/john/company_infos_heroku4.csv' WITH (FORMAT csv, HEADER true); – yaru