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)