Existe uma ferramenta muito boa que importa tabelas para o Postgres a partir de um arquivo csv. É uma ferramenta de linha de comando chamada pgfutter (com binários para windows, linux, etc.). Uma de suas grandes vantagens é que ele também reconhece os nomes dos atributos/colunas.
O uso da ferramenta é simples. Por exemplo, se você quiser importar
myCSVfile.csv
:pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv
Isto irá criar uma tabela (chamada
myCSVfile
) com os nomes das colunas retirados do cabeçalho do arquivo csv. Além disso, os tipos de dados serão identificados a partir dos dados existentes. Algumas notas:O comando
pgfutter
varia dependendo do binário que você usa, por exemplo pode ser pgfutter_windows_amd64.exe
(renomeie-o se você pretende usar este comando com frequência). O comando acima deve ser executado em uma janela de linha de comando (por exemplo, no Windows execute cmd
e certifique-se de pgfutter
é acessível). Se você quiser ter um nome de tabela diferente, adicione --table "myTable"
; para selecionar um esquema de banco de dados específico, use --schema "mySchema"
. Caso você esteja acessando um banco de dados externo use --host "myHostDomain"
. Um exemplo mais elaborado de
pgfutter
para importar myFile
em myTable
é este:pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv
Muito provavelmente você irá alterar alguns tipos de dados (de texto para numérico) após a importação:
alter table myTable
alter column myColumn type numeric
using (trim(myColumn)::numeric)