PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Posso criar automaticamente uma tabela no PostgreSQL a partir de um arquivo csv com cabeçalhos?


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)