PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Kann ich aus einer CSV-Datei mit Kopfzeilen automatisch eine Tabelle in PostgreSQL erstellen?

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)