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: 3.540 ]

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

Leitura recomendada

Vacuum - otimizando sua base de dados PostgreSQL

Automação comercial livre no Slackware 12

PostgreSQL - Instalação inicial no Debian Wheezy 64 bits

Checklist de performance do PostgreSQL 8.0

Unificando bases de dados com Schemas

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts