Det finns ett mycket bra verktyg som importerar tabeller till Postgres från en csv-fil. Det är ett kommandoradsverktyg som heter pgfutter (med binärfiler för Windows, Linux, etc.). En av dess stora fördelar är att den känner igen attribut-/kolumnnamnen också.
Användningen av verktyget är enkel. Till exempel om du vill importera myCSVfile.csv
:
pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv
Detta kommer att skapa en tabell (kallad myCSVfile
) med kolumnnamnen hämtade från csv-filens rubrik. Dessutom kommer datatyperna att identifieras från befintliga data.
Några anteckningar:Kommandot pgfutter
varierar beroende på vilken binär du använder, t.ex. det kan vara pgfutter_windows_amd64.exe
(byt namn på det om du tänker använda det här kommandot ofta). Kommandot ovan måste köras i ett kommandoradsfönster (t.ex. i Windows kör cmd
och kontrollera pgfutter
är tillgänglig). Om du vill ha ett annat tabellnamn lägg till --table "myTable"
; för att välja ett speciellt databasschema använder vi --schema "mySchema"
. Om du använder en extern databas använd --host "myHostDomain"
.
Ett mer utarbetat exempel på pgfutter
för att importera myFile
till myTable
är den här:
pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv
Troligtvis kommer du att ändra några datatyper (från text till numerisk) efter importen:
alter table myTable
alter column myColumn type numeric
using (trim(myColumn)::numeric)