Es gibt ein sehr gutes Tool, das Tabellen aus einer CSV-Datei in Postgres importiert. Es ist ein Befehlszeilentool namens pgfutter (mit Binärdateien für Windows, Linux usw.). Einer der großen Vorteile ist, dass es auch die Attribut-/Spaltennamen erkennt.
Die Nutzung des Tools ist einfach. Zum Beispiel, wenn Sie myCSVfile.csv
importieren möchten :
pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv
Dadurch wird eine Tabelle (mit dem Namen myCSVfile
) erstellt ) mit den Spaltennamen aus dem Header der CSV-Datei. Zusätzlich werden die Datentypen aus den vorhandenen Daten identifiziert.
Ein paar Anmerkungen:Der Befehl pgfutter
variiert je nach verwendeter Binärdatei, z. es könnte pgfutter_windows_amd64.exe
sein (benennen Sie ihn um, wenn Sie beabsichtigen, diesen Befehl häufig zu verwenden). Der obige Befehl muss in einem Befehlszeilenfenster ausgeführt werden (z. B. in Windows führen Sie cmd
aus und sorgen für pgfutter
zugänglich ist). Wenn Sie einen anderen Tabellennamen haben möchten, fügen Sie --table "myTable"
hinzu; um ein bestimmtes Datenbankschema auszuwählen, verwenden Sie --schema "mySchema"
. Falls Sie auf eine externe Datenbank zugreifen, verwenden Sie --host "myHostDomain"
.
Ein ausführlicheres Beispiel für pgfutter
um myFile
zu importieren in myTable
ist das hier:
pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv
Höchstwahrscheinlich werden Sie nach dem Import einige Datentypen ändern (von Text zu Zahlen):
alter table myTable
alter column myColumn type numeric
using (trim(myColumn)::numeric)