quinta-feira, 28 de julho de 2016

Como inserir dados no postgresql utilizando o comando COPY

O comando copy do postgresql pode ser utilizado tanto para a entrada quanto para a saída de dados de e para um arquivo texto.
Para agilizar meu trabalho de popular uma tabela de focos de queimadas neste exercício estou utilizando um arquivo CSV como fonte de dados. Note no exemplo abaixo que o arquivo é separado por virgulas e possui um cabecalho na primeira linha.

YYYYMMDD,HHMM,sat,lat,lon,T21,T31,sample,FRP,conf,type
20160401,0013,T,-9.929,151.006,313.3,295.8,490,6.3,43,0
20160401,0016,T,-21.804,149.064,314.0,294.5,571,7.5,48,0
20160401,0017,T,-23.772,151.204,315.0,300.3,827,8.2,0,2

Previamente foi criada uma tabela no banco de dados que apresentam os mesmos campos deste arquivo, e no meu caso ainda existem outros mais que vou popular depois utilizando cruzamento espacial. Por este motivo o comando copy precisa receber uma lista com o nome dos campos que foram definidos na tabela, porém mantendo a ordem do arquivo CSV.

COPY tabela_banco(data,hora,sat,lat,lon,T21,T31,sample,FRP,conf,tipo) 
FROM '/path/to/file.csv' DELIMITER ',' CSV HEADER

Desta maneira o processo é muito rápido.