Er is een zeer goede tool die tabellen in Postgres importeert vanuit een csv-bestand. Het is een opdrachtregelprogramma genaamd pgfutter (met binaire bestanden voor windows, linux, enz.). Een van de grote voordelen is dat het ook de namen van attributen/kolommen herkent.
Het gebruik van de tool is eenvoudig. Als u bijvoorbeeld myCSVfile.csv
. wilt importeren :
pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv
Dit zal een tabel maken (genaamd myCSVfile
) met de kolomnamen uit de kop van het csv-bestand. Bovendien zullen de gegevenstypes worden geïdentificeerd aan de hand van de bestaande gegevens.
Een paar opmerkingen:Het commando pgfutter
varieert afhankelijk van het binaire bestand dat u gebruikt, b.v. het zou pgfutter_windows_amd64.exe
kunnen zijn (hernoem het als u van plan bent deze opdracht vaak te gebruiken). De bovenstaande opdracht moet worden uitgevoerd in een opdrachtregelvenster (bijvoorbeeld in Windows voer cmd
uit en zorg ervoor dat pgfutter
toegankelijk is). Als u een andere tabelnaam wilt hebben, voeg dan --table "myTable"
toe; om een bepaald databaseschema te selecteren, ons --schema "mySchema"
. Als u een externe database gebruikt, gebruik dan --host "myHostDomain"
.
Een uitgebreider voorbeeld van pgfutter
om myFile
te importeren in myTable
is deze:
pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv
Hoogstwaarschijnlijk zult u na het importeren enkele gegevenstypen (van tekst naar numeriek) wijzigen:
alter table myTable
alter column myColumn type numeric
using (trim(myColumn)::numeric)