PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Posso creare automaticamente una tabella in PostgreSQL da un file CSV con intestazioni?

C'è un ottimo strumento che importa le tabelle in Postgres da un file CSV. È uno strumento da riga di comando chiamato pgfutter (con binari per Windows, Linux, ecc.). Uno dei suoi grandi vantaggi è che riconosce anche i nomi di attributo/colonna.

L'utilizzo dello strumento è semplice. Ad esempio, se desideri importare myCSVfile.csv :

pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv

Questo creerà una tabella (chiamata myCSVfile ) con i nomi delle colonne presi dall'intestazione del file csv. Inoltre, i tipi di dati verranno identificati dai dati esistenti.

Alcune note:Il comando pgfutter varia a seconda del binario che usi, ad es. potrebbe essere pgfutter_windows_amd64.exe (rinominalo se intendi usare questo comando frequentemente). Il comando precedente deve essere eseguito in una finestra della riga di comando (ad es. in Windows esegui cmd e assicurati pgfutter è accessibile). Se desideri avere un nome di tabella diverso, aggiungi --table "myTable"; per selezionare uno schema di database particolare us --schema "mySchema" . Nel caso tu stia accedendo a un database esterno, usa --host "myHostDomain" .

Un esempio più elaborato di pgfutter per importare myFile in myTable è questo:

pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv

Molto probabilmente cambierai alcuni tipi di dati (da testo a numerico) dopo l'importazione:

alter table myTable
  alter column myColumn type numeric
    using (trim(myColumn)::numeric)