Translate

Mostrando postagens com marcador copy. Mostrar todas as postagens
Mostrando postagens com marcador copy. Mostrar todas as postagens

quinta-feira, 24 de outubro de 2013

PostgreSql - Importar arquivo csv e txt

Vamos supor que precisamos importar para a tabela "tb_esporte" os dados do arquivo "'C:/temp/arq_esporte.csv'". Conforme imagem a seguir:


Tabela: tb_esporte

Arquivo: arq_esporte.csv

Para importar o arquivo utilizamos o comando sql COPY e o arquivo deve estar armazenado no servidor do banco de dados. 
Caso você precise acessar remotamente um arquivo, ou seja, o arquivo está em uma outra máquina você deve utilizar o comando psql \copy. Acesse o link em:


COPY tb_esporte
(
    id,
    esporte_desc,
    disponibilidade
)
FROM 'C:/temp/arq_esporte.csv'
DELIMITER ';'
CSV HEADER;

Significado:
  • COPY: comando utilizado para importar a tabela;
  • tb_esporte: nome da tabela que receberá os dados;
  • (...):  dentro do parenteses colocamos as colunas que receberão os dados. Neste caso, utilizamos as colunas id, esporte_desc  e disponibilidade;
  • FROM: após o "FROM" devemos colocar o diretório que está localizado o arquivo. O diretório sempre deve usar "/", nunca "\", tanto para Windows quanto para LinuxO arquivo que será importado tem a extensão csv, também poderiamos importar um arquivo com a extensão "txt";
  • DELIMITER: após o delimiter devemos colocar o separador que o arquivo utiliza. O separador poder ser ";", ",", "|" entre outros. Neste caso,  o separador do arquivo é ";" ;
  • CSV HEADER: utilize "CSV HEADER" caso não queira importar a primeira linha. Para este arquivo não importamos a primeira linha, pois é o cabeçalho;

Para visualizar a tabela com os dados importados execute um select:

SELECT * FROM  tb_esportes;

Veja o resultado na imagem abaixo.


Possíveis problemas com a codificação

Se a codificação do arquivo for diferente do seu banco, pode ocorrer um erro e o seu arquivo não ser importado. Exemplo: se o seu arquivo tiver a codificação "ANSI" e o da sua tabela tiver a codificação "UTF-8". A mensagem de erro exibida será:

ERRO:  sequência de bytes é inválida para codificação "UTF8": 0xe7e36f

Para resolver este erro você poder salvar o arquivo com a codificação "UTF-8". No campo "tipo" escolha a codificação "UTF-8" e depois pressione o botão Salvar. Veja a imagem abaixo.






A versão do PostgreSql utilizada neste exemplo é a 9.0.

PostgreSql - exportar arquivo csv ou txt

Vamos supor que precisamos exportar os dados da tabela "tb_esporte" para um arquivo csv. 
Podemos visualizar a tabela esporte a seguir:



Para exportar os dados da tabela utilizamos o comando sql COPY e o arquivo deve estar armazenado no servidor do banco de dados. 

Caso você precise acessar remotamente um arquivo, ou seja, o arquivo está em uma outra máquina você deve utilizar o comando psql \copy. Acesse o link em:



Para exportar a tabela utilizamos o seguinte comando:

COPY

(
    SELECT id, esporte_desc, disponibilidade FROM tb_esporte
)
TO 'C:/temp/arq_esporte.csv'
DELIMITER ';'
CSV HEADER

Significado:
  • COPY: comando utilizado para exportar a tabela;
  • (...):  dentro do parenteses montamos o "SELECT" com as colunas que desejamos exportar;
  • TO: após o  "TO" devemos colocar o diretório que desejamos salvar o arquivo. O diretório sempre deve usar "/", nunca "\", tanto para Windows quanto para Linux. O arquivo foi salvo como csv, foi utilizada a extensão ".csv", caso queira salvar como txt troque a extensão do arquivo para ".txt";
  • DELIMITER: após o delimiter devemos colocar o separador que queremos utilizar. O separador poder ser ";", ",", "|" entre outros. Neste caso foi utilizado o ";" ;
  • CSV HEADER: utilize "CSV HEADER" caso queira que os nomes das colunas apareçam no arquivo (cabeçalho);
Após executar o comando você poderá visualizar o arquivo no diretório escolhido. Caso não esteja visível pressione a tecla "F5". O arquivo criado poder ser visualizado na imagem abaixo. 



A versão do PostgreSql utilizada neste exemplo é a 9.0.


Observações

Para que o arquivo seja criado verifique as permissões do diretório. Veja a imagem abaixo: