Neste exemplo, vamos executar os comandos do cliente psql através do prompt de comando do Windows.
Em breve, será postado como executar os comandos no terminal linux.
Não confunda com o comando sql copy, onde o arquivo deve estar obrigatoriamente no servidor.
Para saber mais sobre o comando sql copy acesse o link: Postgresql - Importar arquivo csv e txt
1º) Exemplo
Vamos importar os dados do arquivo "estoque.csv" localizado no diretório "C:\temp" da máquina cliente para a tabela "estoque", contida no banco de dados "db_rem", localizado no servidor "104.197.20.162".
Caso tenha interesse, faça o download deste exemplo no Google Drive ou veja no GitHub.
Note que este arquivo possui cabeçalho na 1ª linha:
O cabeçalho é:
Para a importação siga as etapas abaixo:
a) Abra o prompt de comando.
b) Faça a autenticação no servidor.
Segue o comando:
Legenda:
-h: ip ou nome do host;
-d: nome do banco de dados;
-U: nome do usuário;
c) Será solicitada a senha, repare que ao digitar a senha não serão exibidos os caracteres. Digite a senha e pressione "Enter".
d) Agora utilize o comando \copy para importar os dados para a tabela estoque:
\copy estoque(codigo, produto, categoria, marca, preco, quantidade) from 'C:/temp/estoque.csv' with delimiter as ';' CSV HEADER
Vamos importar os dados do arquivo "estoque.csv" localizado no diretório "C:\temp" da máquina cliente para a tabela "estoque", contida no banco de dados "db_rem", localizado no servidor "104.197.20.162".
Caso tenha interesse, faça o download deste exemplo no Google Drive ou veja no GitHub.
Note que este arquivo possui cabeçalho na 1ª linha:
O cabeçalho é:
codigo;produto;categoria;marca;preco;quantidade
Arquivo: estoque.csv |
Diretório C:\temp |
Localização e script da tabela "estoque" |
Para a importação siga as etapas abaixo:
a) Abra o prompt de comando.
Prompt de Comando |
b) Faça a autenticação no servidor.
Autenticação |
psql -h 104.197.20.162 -d db_rem -U postgres
Legenda:
-h: ip ou nome do host;
-d: nome do banco de dados;
-U: nome do usuário;
c) Será solicitada a senha, repare que ao digitar a senha não serão exibidos os caracteres. Digite a senha e pressione "Enter".
d) Agora utilize o comando \copy para importar os dados para a tabela estoque:
\copy estoque(codigo, produto, categoria, marca, preco, quantidade) from 'C:/temp/estoque.csv' with delimiter as ';' CSV HEADER
Comando \copy |
- \copy: comando psql;
- estoque: nesta tabela serão incluídos os registros que estão no arquivo;
- codigo, produto, categoria, marca, preco e quantidade: nome das colunas;
- from 'C:/temp/estoque.csv': após o "from" deverá ser colocado o nome do diretório, seguido pelo nome do arquivo e a extensão. Neste exemplo, a extensão é ".csv" mas poderia ser ".txt". Importante!!! Até mesmo no sistema operacional Windows, repare que NÃO se deve utilizar a barra invertida "\", e sim a barra normal "/" para identificar o diretório;
- with delimiter as ';': o delimitador serve para separar as colunas. Após o "with delimiter as", coloque o delimitador. Neste exemplo é o ";" mas o delimitador pode ser "|" ou "," entre outros;
- CSV HEADER: este parâmetro indica que o arquivo possui cabeçalho;
Caso tenha interesse, faça o download deste exemplo no Google Drive ou veja no GitHub.
Arquivo: estoque_sc.csv |
Segue o comando \copy para importar os dados para a tabela estoque:
\copy estoque(codigo, produto, categoria, marca, preco, quantidade) from 'C:/temp/estoque_sc.csv' with delimiter as ';'
Comando \copy |
Legenda:
- \copy: comando psql;
- estoque: nesta tabela serão incluídos os registros que estão no arquivo;
- codigo, produto, categoria, marca, preco e quantidade: nome das colunas;
- from 'C:/temp/estoque_sc.csv': após o "from" deverá ser colocado o nome do diretório, seguido pelo nome do arquivo e a extensão. Neste exemplo, a extensão é ".csv" mas poderia ser ".txt". Importante!!! Até mesmo no sistema operacional Windows, repare que NÃO se deve utilizar a barra invertida "\", e sim a barra normal "/" para identificar o diretório;
- with delimiter as ';': o delimitador serve para separar as colunas. Após o "with delimiter as", coloque o delimitador. Neste exemplo é o ";" mas o delimitador pode ser "|" ou "," entre outros;
Após executar o comando, 3 registros foram inseridos na tabela.
Muito Obrigado!!!!
ResponderExcluirMe salvou demais
Jovem. Tenho o postgres instalado em um container em um NAS e gostaria de importar dados de um arquivo csv para uma tabela no servidor. A questão é que o prompt não reconhece o comando para acessar o BD psql
ResponderExcluir