PostgreSQL no Slackware - Importando e Exportando arquivos TXT e CSV

No presente artigo abordarei a instalação e configuração do PostgreSQL no Slackware Linux e o procedimento para importar e exportar arquivos TXT e CSV.

[ Hits: 5.259 ]

Por: Jean César em 27/03/2018


Importação e exportação de arquivos TXT



Importação e exportação de arquivos TXT correspondentes a uma tabela para PostgreSQL.

Os dados do arquivo cadastros.txt serão os abaixo:

01; Boi Preto; 2000-02-29
02; Sol Nascente; 2009-10-01
03; Parque Belo; 2007-03-15
04; Pedra Bonita; 2001-08-25
05; Nossa Senhora; 2011-06-22

Vamos criar o arquivo cadastros.txt em /tmp:

Digite a seguinte linha abaixo abrindo aspas, com o su e pressione ENTER e depois que apareceu copie e cole o conteúdo acima que será importado para o banco de dados teste depois de copiado pressione ENTER e digite EOF, pressione ENTER novamente e feche as aspas, pressione ENTER novamente para digitar a senha e o arquivo cadastros.txt será criado em /tmp.

su -c "cat >/tmp/cadastros.txt<<EOF
01; Boi Preto; 2000-02-29
02; Sol Nascente; 2009-10-01
03; Parque Belo; 2007-03-15
04; Pedra Bonita; 2001-08-25
05; Nossa Senhora; 2011-06-22
EOF"
Senha:

Se você já tem instalado o postgres no seu Slackware, vamos ativar o mesmo, ou então execute os passos de instalação e configuração contidos na página anterior.

Iniciando o server postgresql:

su -c "/etc/rc.d/rc.postgresql start"

Vamos logar no usuário postgres:

su postgres Senha : <suasenha postgres>

Entraremos no terminal de comandos pgsql para criar o banco de dados teste anexado ao usuário darkstar:

postgres$ psql

postgres=# create database teste owner darkstar encoding 'UTF8';
CREATE DATABASE

Logando no banco de dados teste com o usuário darkstar:

postgres=# \c teste darkstar;
You are now connected to database "teste" as user "darkstar".

Agora dentro do banco de dados teste, vamos criar uma tabela chamada cadastros, com campo, primary key não serial (auto_increment):

teste=# create table cadastros(
id_faz int not null unique primary key,
nome_faz varchar(25) not null,
data_compra date not null
);

CREATE TABLE

Importando cadastros.txt em tabela com campo, primary key não serial (auto_increment):

Comando de importação do arquivo /tmp/exportacao.txt:

teste=# copy cadastros from '/tmp/cadastros.txt' using delimiters ';';
COPY 4

teste=# select * from cadastros;
 id_faz |   nome_faz     | data_compra 
---------+------------------+-------------
      1   | Sol Nascente | 2009-10-01
      2   | Parque Belo  | 2007-03-15
      3   | Pedra Bonita | 2001-08-25
      4   | Medeiros     | 2011-06-22
(4 rows)

Se você criou um arquivo em csv movendo para /tmp, comando de importação do arquivo /tmp/exportacao.csv:

teste=# copy cadastros from '/tmp/cadastros.csv' using delimiters ';' CSV HEADER;
COPY 4

teste=# select * from cadastros;
 id_faz |   nome_faz   | data_compra 
--------+--------------+-------------
      1 | Sol Nascente | 2009-10-01
      2 | Parque Belo  | 2007-03-15
      3 | Pedra Bonita | 2001-08-25
      4 | Medeiros     | 2011-06-22
(4 rows)

Agora vamos exportar sem os IDs para usarmos em uma tabela com campo, primary key definido como serial (auto_increment):

Comando de exportação da tabela cadastros para /tmp/exportacao.txt:

teste=# copy cadastros(nome_faz,data_compra) to '/tmp/exportacao.txt' using delimiters ';';

Comando de exportação da tabela cadastros para /tmp/exportacao.csv:

teste=# copy cadastros(nome_faz,data_compra) to '/tmp/exportacao.csv' using delimiters ';' CSV HEADER;

Os dois comandos acima exportam os dados da tabela cadastros, sem os IDs, então nosso arquivo em /tmp/exportacao.txt ficará assim como este abaixo, note que em não precisamos de delimitadores ";", antes do campo nome, isso por que o comando copy é mais eficiente no postgres:

cat /tmp/exportacao.txt
Sol Nascente; 2009-10-01
Parque Belo; 2007-03-15
Pedra Bonita; 2001-08-25
Medeiros; 2011-06-22


Vamos deletar nossa tabela cadastros para recriar novamente, mas com serial (auto_increment).

teste=# drop table cadastros;
DROP TABLE

Recriando a tabela cadastros com serial (auto_increment):

teste=# create table cadastros(
id_faz serial primary key not null,
nome_faz varchar(25) not null,
data_compra date not null
);

CREATE TABLE

Caso necessite exportar uma tabela com todos os campos faça:

teste=# copy cadastros to '/tmp/exportacao.txt' using delimiters ';';

Importando o arquivo exportacao.txt em tabela com campo serial. Os dados do arquivo /tmp/exportacao.txt serão os dados do comando cat.

Comando de importação do arquivo /tmp/exportacao.txt:

teste=# copy cadastros(nome_faz,data_compra) from '/tmp/exportacao.txt' using delimiters ';';
COPY 4

teste=# select * from cadastros;
 id_faz |   nome_faz     | data_compra 
---------+------------------+-------------
      1   | Sol Nascente | 2009-10-01
      2   | Parque Belo  | 2007-03-15
      3   | Pedra Bonita | 2001-08-25
      4   | Medeiros     | 2011-06-22
(4 rows)

Comando de importação para exportacao.csv:

teste=# copy cadastros(nome_faz,data_compra) from '/tmp/exportacao.csv' using delimiters ';' CSV HEADER;
COPY 4

teste=# select * from cadastros;
 id_faz |   nome_faz    | data_compra 
---------+-----------------+-------------
      1  | Sol Nascente | 2009-10-01
      2  | Parque Belo  | 2007-03-15
      3  | Pedra Bonita | 2001-08-25
      4  | Medeiros     | 2011-06-22
(4 rows)

Página anterior     Próxima página

Páginas do artigo
   1. PostgreSQL
   2. Importação e exportação de arquivos TXT
   3. Bônus - Outros comandos úteis
Outros artigos deste autor

Slackware + MariaDB (MySQL): importando e exportando arquivos TXT

Ativando e configurando a compactação de memória com Zram no Slackware

Plugins, Atalhos e Comandos do Visual Studio Code

Script GitPratico para criar repositórios remotos sem logar no GitHub

Leitura recomendada

Partição de tabelas no PostgreSQL

Autenticação no PostgreSQL - com exemplos

Programando PostgreSQL + PHP

HowTo: Como criar Cluster Linux - Ativo/Passivo para Postgres com DRBD, Pacemaker e Corosync

PostGIS no Slackware

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts