C'è un ottimo strumento che importa le tabelle in Postgres da un file CSV. È uno strumento da riga di comando chiamato pgfutter (con binari per Windows, Linux, ecc.). Uno dei suoi grandi vantaggi è che riconosce anche i nomi di attributo/colonna.
L'utilizzo dello strumento è semplice. Ad esempio, se desideri importare myCSVfile.csv
:
pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv
Questo creerà una tabella (chiamata myCSVfile
) con i nomi delle colonne presi dall'intestazione del file csv. Inoltre, i tipi di dati verranno identificati dai dati esistenti.
Alcune note:Il comando pgfutter
varia a seconda del binario che usi, ad es. potrebbe essere pgfutter_windows_amd64.exe
(rinominalo se intendi usare questo comando frequentemente). Il comando precedente deve essere eseguito in una finestra della riga di comando (ad es. in Windows esegui cmd
e assicurati pgfutter
è accessibile). Se desideri avere un nome di tabella diverso, aggiungi --table "myTable"
; per selezionare uno schema di database particolare us --schema "mySchema"
. Nel caso tu stia accedendo a un database esterno, usa --host "myHostDomain"
.
Un esempio più elaborato di pgfutter
per importare myFile
in myTable
è questo:
pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv
Molto probabilmente cambierai alcuni tipi di dati (da testo a numerico) dopo l'importazione:
alter table myTable
alter column myColumn type numeric
using (trim(myColumn)::numeric)