Der er et meget godt værktøj, der importerer tabeller til Postgres fra en csv-fil. Det er et kommandolinjeværktøj kaldet pgfutter (med binære filer til windows, linux osv.). En af dens store fordele er, at den også genkender attribut-/kolonnenavnene.
Brugen af værktøjet er enkel. For eksempel hvis du vil importere myCSVfile.csv
:
pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv
Dette vil oprette en tabel (kaldet myCSVfile
) med kolonnenavnene taget fra csv-filens header. Derudover vil datatyperne blive identificeret ud fra de eksisterende data.
Et par bemærkninger:Kommandoen pgfutter
varierer afhængigt af den binære du bruger, f.eks. det kunne være pgfutter_windows_amd64.exe
(Omdøb den, hvis du har til hensigt at bruge denne kommando ofte). Ovenstående kommando skal udføres i et kommandolinjevindue (kør f.eks. cmd
i Windows og sørg for pgfutter
er tilgængelig). Hvis du gerne vil have et andet tabelnavn, skal du tilføje --table "myTable"
; for at vælge et bestemt databaseskema bruger vi --schema "mySchema"
. Hvis du har adgang til en ekstern database, brug --host "myHostDomain"
.
Et mere udførligt eksempel på pgfutter
for at importere myFile
ind i myTable
er denne:
pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv
Mest sandsynligt vil du ændre nogle få datatyper (fra tekst til numerisk) efter importen:
alter table myTable
alter column myColumn type numeric
using (trim(myColumn)::numeric)