Re: [pgbr-geral] Inserção de grandes volumes

2010-03-18 Por tôpico Fábio Telles Rodriguez
Em 17 de março de 2010 09:58, Jesus Rodrigues
jesusrodrigu...@gmail.com escreveu:
 Isso mesmo,

 Tenho a restrição de utilizar um único arquivo.

Resposta rápida:

Expressões Regulares

Resposta de Consultor:

Depende do formato do arquivo

Minha resposta:

* Se o seu problema é que o arquivo já vem com os dados misturados, e
se você estiver em um sistema UNIX... então pode utilizar coisas como
SED e AWK com auxílio de expressões regulares (REGEX para os íntimos)
para separar os registros do seu arquivo e só então importa-los para o
banco.
* Se não estiver em UNIX, pode criar uma tabela intermediária com um
único campo TEXT e importar cada registro lá. Depois você pode
utilizar consultas com REGEX que o Postgres tem suporte para separar
os registros cada um em sua tabela. Uma variação seria utilizar uma
tabela externa e fazer o banco ler diretamente o arquivo TXT.

Existem casos mais complexos onde é preciso fazer validações,
condicionais etc. Tem arquivos de banco e programas do governo onde os
arquivos TXT são uma verdadeira zona. Se fossem XML... aí seria mais
fácil. Nestes casos você tem de apelar para o PL mesmo. Mas se os
arquivos forem muito grandes, você vai precisar testar bem para a sua
carga não levar uma eternidade. Isso pode exigir um pouco mais de
habilidade com PL.

Espero ter ajudado.


[]s
Fábio Telles

 Obrigado pela ajuda!

 Se alguém da lista tiver mais alguma ideia: Como carregar múltiplas tabelas
 utilizando um único arquivo para o pgloader?

 []s

 Em 17 de março de 2010 09:52, JotaComm jota.c...@gmail.com escreveu:

 Olá,

 Em 17 de março de 2010 09:46, Jesus Rodrigues jesusrodrigu...@gmail.com
 escreveu:

 Conforme disse entendi a ideia de usar o loader,


 Contudo  vc usa dois arquivos arquivo_tabela1.txt e arquivo_tabela2.txt.
 Minha pergunta era: Séria possível utilizar um único arquivo?

 Acho que agora entendi o que você quis dizer :)
 Na verdade eu teria um arquivo que chamaria os arquivos contendo os dados
 das tabelas, neste caso poderiam ser vários arquivos, um para cada tabela. E
 a sua dúvida é, ter todos os dados em um único arquivo e carregar este
 arquivo, até onde eu sei isso não seria possível, pois não vejo como
 interpretar quando termina os dados de uma tabela e quando começam os dados
 do próxima tabela.

 Obrigado

 Em 17 de março de 2010 09:34, JotaComm jota.c...@gmail.com escreveu:

 Olá,

 Em 17 de março de 2010 09:21, Jesus Rodrigues
 jesusrodrigu...@gmail.com escreveu:

 JotaComm,


 Ok posso usar o pgloader. Entretanto, não consigo imaginar como
 carregar dados para duas tabela A e B utilizando um unico arquivo. 
 Imagine,
 a chave de A é colocada em B, ok. Ex:

 A1
 A2
 B1,A1
 B2,A1
 B3,A1
 B1,A2


 Como o banco saberia que A1 tem os filhos ( B1, B2, B3)? Usar o loader
 é tranquilo, mas não vejo uma forma de orgazinar a estrutura das tabelas 
 em
 um unico arquivo, principalmente ser for um modelo mais complexo.

 Segundo o que você falou sua dúvida era como carregar dados para duas
 tabelas, vamos ao exemplo bem simples.

 CREATE TABLE tab1(codigo INTEGER PRIMARY KEY);

     CREATE TABLE tab2(codigo INTEGER PRIMARY KEY,codigo_tab01 INTEGER
 REFERENCES tab1);
    Arquivo a ser carregado:
   COPY tab1 FROM '/tmp/arquivo_tabela1.txt' WITH DELIMITER ';' NULL AS
 '';
   COPY tab2 FROM '/tmp/arquivo_tabela2.txt' WITH DELIMITER ';' NULL AS
 '';


 Abs

 Em 17 de março de 2010 08:51, JotaComm jota.c...@gmail.com escreveu:

 Olá,

 Em 17 de março de 2010 08:32, Jesus Rodrigues
 jesusrodrigu...@gmail.com escreveu:

 Pessoal,

 Preciso realizar carga de grandes volumes em banco postgre. Segue um
 exemplo do problema.

 Uma correção, o nome do banco não é Postgre e sim Postgres ou
 PostgreSQL.

 Tenho duas tabela A e B, em que A contém múltiplas ocorrências de B
 (1 para N). Gostaria de carregar essas tabelas via loader, semelhante ao
 comando existente no oracle. Meu modelo é mais complexo, mas esse foi 
 apenas
 um pequeno exemplo. Pergunta-se:

 1º Existe um processo de carga semelhante (carga via loader) no
 postgre?

 Você quer carregar os dados de duas tabelas para um banco é isso?
 De uma olhada no pgloader [1]
 [1] http://pgloader.projects.postgresql.org/

 2º É possível carregar as duas tabelas (A e B) utilizando um único
 arquivo? Por exemplo, se esse arquivo tiver os dados estruturados em 
 forma
 de um xml ou de forma hierárquica. Ou é necessário possuir dois 
 arquivos,
 uma para os dados da tabela A e outro para os dados da tabela B?

 Pode ser um arquivo para carregar as duas tabelas.

 3º Para carga de grandes volumes, um processo via loader é mais
 eficiente que um processo de inserção “normal” (abre transação, insere 
 tudo,
 commit, fecha fecha transação)?

 Obrigado,


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com

 

[pgbr-geral] Insert Condicional..

2010-03-18 Por tôpico Nilson Chagas
Pessoal como eu montaria uma trigger/constraint para criar a seguinte regra.

Tabela A
Codigo
Nome

Tabela B
Codigo
Data

Somente inseri registros na tabela A se existir o Codigo na Tabela B.

Não pode ser através de FK, pq a Tabela B é zerada a cada 2 horas.

Pensei em montar um trigger mas não sei como pegar o retorno do select e o
que informar no return.

Se alguém puder me cantar a pedra. rsrsrsrs

-- 
[]s
Nilson Chagas - Ubuntu User 25794
---
Visite:
http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico

Twitter: avozdoevangelho
Twitter: matrixspnet

http://www.amados.com.br
http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico
On-Line
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] PostgreSQL Distribuido

2010-03-18 Por tôpico Julio C. Gava
Boa noite galera,
estou fazendo um tcc ( trabalho de conclusão de curso ) sobre Banco de 
Dados Distribuídos, e pensei em utilizar o PostgreSQL pois já venho utilizando 
ele a muito tempo. Infelizmente não encontrei muito sobre o assunto no google, 
gostaria de ajuda.

Obrigado,
Julio___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Insert Condicional..

2010-03-18 Por tôpico Dickson S. Guedes
Em 18 de março de 2010 21:31, Nilson Chagas
nilson.chagas.si...@gmail.com escreveu:
 Pessoal como eu montaria uma trigger/constraint para criar a seguinte regra.

 Tabela A
 Codigo
 Nome

 Tabela B
 Codigo
 Data

 Somente inseri registros na tabela A se existir o Codigo na Tabela B.

 Não pode ser através de FK, pq a Tabela B é zerada a cada 2 horas.

 Pensei em montar um trigger mas não sei como pegar o retorno do select e o
 que informar no return.

 Se alguém puder me cantar a pedra. rsrsrsrs

Não entendi muito bem o que você quer, mas para não passar em branco o
cantar da pedra vai aqui um exemplo do que eu pude entender.

---
postgres=# CREATE TEMP TABLE a (codigo int, nome varchar);
CREATE TABLE
postgres=# CREATE TEMP TABLE b (codigo int, data date);
CREATE TABLE
postgres=# INSERT INTO b VALUES (1,'2001/10/09');
INSERT 0 1
postgres=# INSERT INTO b VALUES (2,'2002/10/09');
INSERT 0 1
postgres=# INSERT INTO b VALUES (3,'2002/11/09');
INSERT 0 1
postgres=# INSERT INTO b VALUES (4,'2010/01/09');
INSERT 0 1
postgres=# INSERT INTO a SELECT 1, 'JOAO' FROM B WHERE 1=b.codigo;
INSERT 0 1
postgres=# INSERT INTO a SELECT 5, 'PEDRO' FROM B WHERE 5=b.codigo;
INSERT 0 0
postgres=# INSERT INTO a SELECT 4, 'MARIA' FROM B WHERE 4=b.codigo;
INSERT 0 1
postgres=# SELECT * from b;
 codigo |data
+
  1 | 2001-10-09
  2 | 2002-10-09
  3 | 2002-11-09
  4 | 2010-01-09
(4 linhas)

postgres=# SELECT * from a;
 codigo | nome
+---
  1 | JOAO
  4 | MARIA
(2 linhas)
---

[]s
Dickson S. Guedes
mail/xmpp: gue...@guedesoft.net - skype: guediz
http://guedesoft.net - http://www.postgresql.org.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Insert Condicional..

2010-03-18 Por tôpico JotaComm
Olá,

Em 18 de março de 2010 21:31, Nilson Chagas
nilson.chagas.si...@gmail.comescreveu:

 Pessoal como eu montaria uma trigger/constraint para criar a seguinte
 regra.

 Tabela A
 Codigo
 Nome

 Tabela B
 Codigo
 Data

 Somente inseri registros na tabela A se existir o Codigo na Tabela B.

 Não pode ser através de FK, pq a Tabela B é zerada a cada 2 horas.

 Pensei em montar um trigger mas não sei como pegar o retorno do select e o
 que informar no return.

 Se alguém puder me cantar a pedra. rsrsrsrs


Também não entendi muito bem o que vocẽ deseja. Veja se é mais ou menos isso
que vocẽ quer:

CREATE TABLE tab1(codigo INTEGER PRIMARY KEY,nome VARCHAR(30));

CREATE TABLE tab2(codigo INTEGER PRIMARY KEY,nome VARCHAR(20),data TIMESTAMP
WITHOUT TIME ZONE);

CREATE OR REPLACE RULE exemplo_regra AS ON INSERT TO tab2 DO INSERT INTO
tab1 VALUES (NEW.codigo,NEW.nome);

postgres=# INSERT INTO tab2 VALUES (1,'JP',current_timestamp);
INSERT 0 1
postgres=# SELECT * FROM tab2;
 codigo | nome |data
+--+
  1 | JP   | 2010-03-18 23:37:08.132421
(1 row)

postgres=# SELECT * FROM tab1;
 codigo | nome
+--
  1 | JP
(1 row)




 --
 []s
 Nilson Chagas - Ubuntu User 25794
 ---
 Visite:
 http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico

 Twitter: avozdoevangelho
 Twitter: matrixspnet

 http://www.amados.com.br
 http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso Biblico
 On-Line



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] PostgreSQL Distribuido

2010-03-18 Por tôpico JotaComm
Olá,

Em 18 de março de 2010 22:17, Julio C. Gava julio_...@terra.com.brescreveu:

  Boa noite galera,
 estou fazendo um tcc ( trabalho de conclusão de curso ) sobre Banco de
 Dados Distribuídos, e pensei em utilizar o PostgreSQL pois já venho
 utilizando ele a muito tempo. Infelizmente não encontrei muito sobre o
 assunto no google, gostaria de ajuda.


Vocẽ quer dizer sobre PostgreSQL Distribuído? Ou sobre PostgreSQL?


 Obrigado,
 Julio

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] PostgreSQL Distribuido

2010-03-18 Por tôpico Julio C. Gava
PostgreSQL Distribuido


From: JotaComm 
Sent: Thursday, March 18, 2010 11:39 PM
To: Comunidade PostgreSQL Brasileira 
Subject: Re: [pgbr-geral] PostgreSQL Distribuido


Olá,


Em 18 de março de 2010 22:17, Julio C. Gava julio_...@terra.com.br escreveu:

  Boa noite galera,
  estou fazendo um tcc ( trabalho de conclusão de curso ) sobre Banco de 
Dados Distribuídos, e pensei em utilizar o PostgreSQL pois já venho utilizando 
ele a muito tempo. Infelizmente não encontrei muito sobre o assunto no google, 
gostaria de ajuda.

Vocẽ quer dizer sobre PostgreSQL Distribuído? Ou sobre PostgreSQL? 


  Obrigado,
  Julio

  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




[]s
-- 
JotaComm
http://jotacomm.wordpress.com






___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral