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)