Re: [pgbr-geral] Auditoria em POstgreSQL -
Em 28 de outubro de 2010 20:15, Celso clorenzett...@gmail.com escreveu: Olá Emerson, Nós temos algo assim em nosse ERP (se for o usuário da aplicação). No Oracle você consegue setar um valor para uma variável de Sessão do usuário (na versão 9 do Post, pelo que entendi tem esse recurso tb). Sim, isso é possível, porém desde versões anteriores a 9.0, se eu entendi o que você quis dizer. Mas resolvemos da seguinte forma. Quando o usuário se loga no sistema incluímos um registro em um tabela chamada sessoes, registrando o código do usuário na aplicação e o pg_backend_pid() da sessão. Você quer dizer que associa o id do usuário do seu sistema com o pid da sessão que o usuário está conectado? É isso? Assim quando precisamos saber, usamos a View abaixo para recuperar o usuário da sessão atual. Funciona certinho, o porém é que as vezes ficam registros perdidos na tabela, se o sistema não for encerrado corretamente (quando fecha o sistema, o registro é excluído). CREATE OR REPLACE VIEW vw_sessao AS SELECT sessoes.usr_usuario FROM sessoes WHERE sessoes.usr_sessao = pg_backend_pid(); Espero que seja isso que você procure. Att, Celso Lorenzetti www.sysrs.com.br - Original Message - *From:* Fábio Gibon - Comex System gi...@comexsystem.com.br *To:* Comunidade PostgreSQL Brasileirapgbr-geral@listas.postgresql.org.br *Sent:* Thursday, October 28, 2010 6:47 PM *Subject:* Re: [pgbr-geral] Auditoria em POstgreSQL - Olá Emerson, tem como detalhar melhor o que você precisa? E, adiantando, quando você fala usuário é usuário do banco (login role) ou usuário da sua aplicação? sds Fábio Gibon - Original Message - *From:* Emerson Martins emersonmarti...@gmail.com *To:* pgbr-geral@listas.postgresql.org.br *Sent:* Thursday, October 28, 2010 4:20 PM *Subject:* [pgbr-geral] Auditoria em POstgreSQL - Opa pessoal. Tenho umas triggers de auditoria no sistema.Mas temos também um módulo de usuarios onde sabemos quem estar logado. Preciso de ajuda pra integrar as triggers ao modulo de usuários.Alguem ja implementou algo assim? Tow com esse problema pra resolver..Urgente.. Emerson Martins emersonmarti...@hotmail.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 ___ 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] Agrupar, transformar linhas em colunas
Opa, 2010/10/28 Emerson Hermann emersonherm...@gmail.com /* Estrutura apenas para exemplo */ --DROP TABLE IF EXISTS cadastro_teste; CREATE TEMP TABLE cadastro_teste ( cpf VARCHAR(11) , nome VARCHAR(21) , matricula VARCHAR(7) ); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria Madalena','72034054401','2010011'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Jonas','12034054408','2010032'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria Madalena','72034054401','2010051'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria Madalena','72034054401','2010071'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Jonas','12034054408','2010559'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Marcos','42034054403','2010033'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Marcos','42034054403','2010154'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Joao','53034054403','2010004'); SELECT * FROM cadastro_teste ORDER BY cpf; /* cpf|nome |matricula 12034054408|Jonas |2010559 12034054408|Jonas |2010032 42034054403|Marcos|2010154 42034054403|Marcos|2010033 53034054403|Joao |2010004 72034054401|Maria Madalena|2010071 72034054401|Maria Madalena|2010051 72034054401|Maria Madalena|2010011 */ -- Existe a possibilidade de agrupar esses dados da forma abaixo (concatenando a matricula) sem uso de store function? Utilizo PostgreSQL 8.3. -- Se existe, como seria, com window function ? Sim, com o uso de Window Functions, porém disponível apenas para a versão 8.4 /* cpf|nome |matricula 12034054408|Jonas |2010032;2010559; 42034054403|Marcos|2010033;2010154; 53034054403|Joao |2010004; 72034054401|Maria Madalena|2010011;2010051;2010071; */ O restante o meu colega Osvaldo já deu a dica. ___ 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] Agrupar, transformar linhas em colunas
/* Obrigado Osvaldo e JotaComm, ufa! como simplificou a minha vida, vejam como fazia antes com store function e de longe não era melhor solução comparada com esta, desde já agradeço se alguém quiser postar algum exemplo com window function Veja como fazia com store function, como era sofrivel a minha vida :) */ --type do store function DROP TYPE IF EXISTS public.tp_transform_rows_into_column CASCADE; CREATE TYPE public.tp_transform_rows_into_column AS ( c1 TEXT , c2 TEXT , c3 TEXT , c4 TEXT ); --store function DROP FUNCTION IF EXISTS sf_transform_rows_into_column (sqlx TEXT); CREATE OR REPLACE FUNCTION sf_transform_rows_into_column (sqlx TEXT) RETURNS SETOF public.tp_transform_rows_into_column AS $$ DECLARE row1public.tp_transform_rows_into_column; row2public.tp_transform_rows_into_column; row3public.tp_transform_rows_into_column; ds_comando TEXT; controleTEXT; n_col_transf_rx TEXT; n_contador FLOAT; BEGIN IF (sqlx IS NULL) THEN RAISE EXCEPTION 'QUERY VALORES NULOS!'; -- caso o parametro venha nulo END IF; n_col_transf_rx := ''; ds_comando := 'SELECT * FROM ( ' || sqlx || ' ) AS foo ORDER BY 1 ASC, 3 ASC'; controle:= ''; n_contador := 0; FOR row1 IN EXECUTE ds_comando LOOP IF row1.c1 controle THEN n_col_transf_rx := ''; row2.c1 := row1.c1; row2.c2 := row1.c2; row2.c3 := row1.c3; row2.c4 := row1.c4 || ';'; n_col_transf_rx := row1.c4 || ';'; ELSIF row1.c1 = controle THEN n_col_transf_rx := n_col_transf_rx || row1.c4 || ';'; row2.c4 := n_col_transf_rx; END IF; IF row2.c1 row3.c1 THEN RETURN NEXT row3; END IF; controle:= row1.c1; row3:= row2; n_contador := n_contador + 1; RAISE NOTICE 'Processando tupla... %', n_contador; END LOOP; RETURN NEXT row2; RAISE NOTICE 'Processo concluido com sucesso!!!'; RETURN; EXCEPTION WHEN QUERY_CANCELED THEN RAISE NOTICE 'Processo cancelado, ROLLBACK EFETUADO!!!'; RETURN; END; $$ LANGUAGE 'plpgsql' ; -- depois para execução --como havia anteriormente feito SELECT * FROM sf_transform_rows_into_column ($$ SELECT cpf , nome , 1 AS status , matricula FROM cadastro_teste ORDER BY cpf $$); -- com a versão sugerida por Osvaldo na versão PostgreSQL 8.3, ficou assim: -- para versao Postgres 8.3 CREATE AGGREGATE array_accum (anyelement) ( sfunc = array_append, stype = anyarray, initcond = '{}' ); SELECT cpf, nome, array_accum(matricula) FROM cadastro_teste GROUP BY cpf, nome; -- apenas na versao do Postgres 8.3 --Muito simples ! Show! --Valeu ! /* Emerson Hermann DBA */ Em 29 de outubro de 2010 08:58, JotaComm jota.c...@gmail.com escreveu: Opa, 2010/10/28 Emerson Hermann emersonherm...@gmail.com /* Estrutura apenas para exemplo */ --DROP TABLE IF EXISTS cadastro_teste; CREATE TEMP TABLE cadastro_teste ( cpf VARCHAR(11) , nome VARCHAR(21) , matricula VARCHAR(7) ); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria Madalena','72034054401','2010011'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Jonas','12034054408','2010032'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria Madalena','72034054401','2010051'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Maria Madalena','72034054401','2010071'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Jonas','12034054408','2010559'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Marcos','42034054403','2010033'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Marcos','42034054403','2010154'); INSERT INTO cadastro_teste (nome,cpf,matricula) VALUES ('Joao','53034054403','2010004'); SELECT * FROM cadastro_teste ORDER BY cpf; /* cpf |nome |matricula 12034054408|Jonas |2010559 12034054408|Jonas |2010032 42034054403|Marcos |2010154 42034054403|Marcos |2010033 53034054403|Joao |2010004 72034054401|Maria Madalena|2010071 72034054401|Maria Madalena|2010051 72034054401|Maria Madalena|2010011 */ -- Existe a possibilidade de agrupar esses dados da forma abaixo (concatenando a matricula) sem uso de
Re: [pgbr-geral] Auditoria em POstgreSQL -
Quando o usuário se loga no sistema incluímos um registro em um tabela chamada sessoes, registrando o código do usuário na aplicação e o pg_backend_pid() da sessão. Você quer dizer que associa o id do usuário do seu sistema com o pid da sessão que o usuário está conectado? É isso? Assim quando precisamos saber, usamos a View abaixo para recuperar o usuário da sessão atual. Funciona certinho, o porém é que as vezes ficam registros perdidos na tabela, se o sistema não for encerrado corretamente (quando fecha o sistema, o registro é excluído). CREATE OR REPLACE VIEW vw_sessao AS SELECT sessoes.usr_usuario FROM sessoes WHERE sessoes.usr_sessao = pg_backend_pid(); Interessante a solução... aqui na empresa usamos tabelas temporárias para guardar informações da aplicação durante a sessão do PostgreSQL, são um conjunto de pl/pgsql que fazem essa jogada: fc_startsession(); fc_putsession(text, text); fc_getsession(text); Com isso ao realizar a conexão com o PostgreSQL, nossa aplicação imediatamente roda a fc_startsession e faz uma cópia do conteúdo da variável $_SESSION (usamos PHP) para dentro da sessão do banco, e com isso toda informação que manipulamos em sessão a nível de aplicação fica disponível tb no banco de dados. Essas pls são simples, consistem em manipular pares de Chave/Valor... inclusive estamos testando uma forma de não usar tabelas temporárias para eliminar esse overhead. Veja abaixo o exemplo do uso: postg...@teste_sessao=# SELECT fc_startsession(); fc_startsession - t (1 row) postg...@teste_sessao=# SELECT fc_putsession('Id_Usuario', '1'); fc_putsession --- t (1 row) postg...@teste_sessao=# SELECT fc_getsession('Id_Usuario'); fc_getsession --- 1 (1 row) postg...@teste_sessao=# SELECT fc_putsession('Id_Usuario', '2'); fc_putsession --- t (1 row) postg...@teste_sessao=# SELECT fc_getsession('Id_Usuario'); fc_getsession --- 2 (1 row) Algo bem simples e extremamente útil, que já temos em produção em diversos clientes há mais de 3 anos. -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com Perfil Linkedin: http://br.linkedin.com/in/fabriziomello ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Auditoria em POstgreSQL -
Com isso ao realizar a conexão com o PostgreSQL, nossa aplicação imediatamente roda a fc_startsession e faz uma cópia do conteúdo da variável $_SESSION (usamos PHP) para dentro da sessão do banco, e com isso toda informação que manipulamos em sessão a nível de aplicação fica disponível tb no banco de dados. Essas pls são simples, consistem em manipular pares de Chave/Valor... inclusive estamos testando uma forma de não usar tabelas temporárias para eliminar esse overhead. +1 usando essa mesma solução. Não uso tabelas temporárias, tenho uma tabela específica pra isso. Armazeno o conteúdo de _SESSION e busco usando o identificador de sessão (sessId). []´s, André Volpato ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Failover no Windows
Bom dia pessoal Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008 R2 e estou testando o processos de failover. Quando crio o arquivo de trigger no local especificado no parâmetro 'trigger_file' do recovery.conf nada acontece. Alguém tem alguma idéia do que pode estar errado? Obrigado Norberto ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Failover no Windows
Olá, Em 29 de outubro de 2010 10:49, Norberto Delle betode...@gmail.comescreveu: Bom dia pessoal Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008 R2 e estou testando o processos de failover. Quando crio o arquivo de trigger no local especificado no parâmetro 'trigger_file' do recovery.conf nada acontece. Alguém tem alguma idéia do que pode estar errado? Como você fez a criação do arquivo? Algum erro no Log do PostgreSQL? O que você considera que nada acontece? Obrigado Norberto ___ 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] Digest pgbr-geral, volume 22, assunto 65
Caros colegas vou postar aqui a minha o meu esquema como estou fazendo se alguem puder ajudar..(Estar com erros)! a tabela CREATE TABLE AUDITORIA ( codigo serial NOT NULL, tipo CHAR(1), data TIMESTAMP, usuario VARCHAR(20), tabela VARCHAR(30), campo VARCHAR(30), pid VARCHAR(30), transacao varchar(30) ) a função: CREATE OR REPLACE FUNCTION AUDITORIA () RETURNS TRIGGER AS ' DECLARE consulta varchar; data timestamp; tipo varchar; cols record; usuario varchar; id integer; pid integer; columna varchar; transacao varchar; BEGIN -- data select into data current_timestamp(0); -- ip select into usuario inet_client_addr(); -- pid select into pid pg_backend_pid(); -- transacao select into transacao txid_current(); IF TG_OP = ''INSERT'' THEN tipo:=''I''; select into id new.oid; END IF; IF TG_OP = ''UPDATE'' THEN tipo:=''U''; select into id old.oid; END IF; -- Loop FOR cols IN select attname as nome, attnum as numero frompg_attribute where attrelid = TG_RELID and attnum 0 and NOT attisdropped; LOOP IF NEW. || cols.nome || OLD. || cols.nome || THEN INSERT INTO auditoria (TIPO,DATA,USUARIO,TABELA,CAMPO,NOME1,NOME2,NOME3,PID,TRANSACAO) values (tipo,data,usuario,TG_RELNAME,id,cols.nome,cols.nome,cols.nome,pid,transacao); END IF; END LOOP; RETURN NEW; END; ' LANGUAGE plpgsql; -- CREATE TRIGGER AUDITAR_TABELA1 -- AFTER INSERT OR UPDATE OR DELETE ON TABELA1 --FOR EACH ROW EXECUTE PROCEDURE AUDITORIA(); Alguem pode identificar. o Erro ta no loop ERROR: missing LOOP at end of SQL expression CONTEXTO: compilation of PL/pgSQL function auditoria near line 28 Em 29 de outubro de 2010 12:00, pgbr-geral-requ...@listas.postgresql.org.br escreveu: Send pgbr-geral mailing list submissions to pgbr-geral@listas.postgresql.org.br To subscribe or unsubscribe via the World Wide Web, visit https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral or, via email, send a message with subject or body 'help' to pgbr-geral-requ...@listas.postgresql.org.br You can reach the person managing the list at pgbr-geral-ow...@listas.postgresql.org.br When replying, please edit your Subject line so it is more specific than Re: Contents of pgbr-geral digest... Tópicos de Hoje: 1. Failover no Windows (Norberto Delle) 2. Re: Failover no Windows (JotaComm) 3. Re: Failover no Windows (Norberto Delle) -- Message: 1 Date: Fri, 29 Oct 2010 10:49:21 -0200 From: Norberto Delle betode...@gmail.com Subject: [pgbr-geral] Failover no Windows To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Message-ID: 4ccac2d1.7080...@gmail.com Content-Type: text/plain; charset=ISO-8859-1; format=flowed Bom dia pessoal Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008 R2 e estou testando o processos de failover. Quando crio o arquivo de trigger no local especificado no parâmetro 'trigger_file' do recovery.conf nada acontece. Alguém tem alguma idéia do que pode estar errado? Obrigado Norberto -- Message: 2 Date: Fri, 29 Oct 2010 11:04:51 -0200 From: JotaComm jota.c...@gmail.com Subject: Re: [pgbr-geral] Failover no Windows To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Message-ID: aanlkti=qyd3swswq7rewnr0vym5tteyx4+jvb99bf...@mail.gmail.comqyd3swswq7rewnr0vym5tteyx4%2bjvb99bf...@mail.gmail.com Content-Type: text/plain; charset=iso-8859-1 Olá, Em 29 de outubro de 2010 10:49, Norberto Delle betode...@gmail.com escreveu: Bom dia pessoal Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008 R2 e estou testando o processos de failover. Quando crio o arquivo de trigger no local especificado no parâmetro 'trigger_file' do recovery.conf nada acontece. Alguém tem alguma idéia do que pode estar errado? Como você fez a criação do arquivo? Algum erro no Log do PostgreSQL? O que você considera que nada acontece? Obrigado Norberto ___ 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 -- Próxima Parte -- Um anexo em HTML foi limpo... URL: http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20101029/4049f15d/attachment-0001.htm -- Message: 3 Date: Fri, 29 Oct 2010 11:19:14 -0200 From: Norberto Delle betode...@gmail.com Subject: Re
[pgbr-geral] Numero de linha de uma tabela
Uma curiosidade minha: é possível, numa consulta, formatar a saída de forma que as linhas da tabela de saída venham numeradas? Por exemplo: fazendo uma consulta select Nome from clientes, a saída é uma tabela com uma coluna Nome. A curiosidade é se é possível criar um select que devolva uma tabela com duas colunas, algo assim: |Numero|Nome| |1 |Jão | |2 |Zé | |3 |Tião| []s Bene -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Digest pgbr-geral, volume 22, assunto 65
a criação do arquivo? Algum erro no Log do PostgreSQL? O que você considera que nada acontece? Obrigado Norberto ___ 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 -- Próxima Parte -- Um anexo em HTML foi limpo... URL: http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20101029/4049f15d/attachment-0001.htm -- Message: 3 Date: Fri, 29 Oct 2010 11:19:14 -0200 From: Norberto Delle betode...@gmail.com Subject: Re: [pgbr-geral] Failover no Windows To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Message-ID: 4ccac9d2.2060...@gmail.com Content-Type: text/plain; charset=iso-8859-1 Em 29/10/2010 11:04, JotaComm escreveu: Olá, Em 29 de outubro de 2010 10:49, Norberto Delle betode...@gmail.com mailto:betode...@gmail.com escreveu: Bom dia pessoal Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008 R2 e estou testando o processos de failover. Quando crio o arquivo de trigger no local especificado no parâmetro 'trigger_file' do recovery.conf nada acontece. Alguém tem alguma idéia do que pode estar errado? Como você fez a criação do arquivo? Algum erro no Log do PostgreSQL? O que você considera que nada acontece? Obrigado Norberto ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto: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 Olá Jota Eu copiei o arquivo de um outro local, na base do Ctrl+C - Ctrl+V mesmo. Quando eu digo que nada acontece é que eu esperava que o processo de recuperação parasse e o standby ficasse disponível para conexões. Mas pelo contrário, no log nada aparece indicando que o arquivo trigger tenha sido detectado, e o processo de recuperação apenas continua, como se nada tivesse mudado. Obrigado pela atenção Norberto -- Próxima Parte -- Um anexo em HTML foi limpo... URL: http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20101029/7b69d96b/attachment-0001.htm -- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Fim da Digest pgbr-geral, volume 22, assunto 65 *** -- ___ 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
Re: [pgbr-geral] Numero de linha de uma tabela
Você não citou qual a versão do banco, mas uma alternativa que pode substituir o rownum (do Oracle) é: create temp sequence rownum; select nextval('rownum'), t.* from suatabela t; drop sequence rownum; sds Fábio Gibon - Original Message - From: Benedito A. Cruz b...@cria.org.br To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Sent: Friday, October 29, 2010 11:22 AM Subject: [pgbr-geral] Numero de linha de uma tabela Uma curiosidade minha: é possível, numa consulta, formatar a saída de forma que as linhas da tabela de saída venham numeradas? Por exemplo: fazendo uma consulta select Nome from clientes, a saída é uma tabela com uma coluna Nome. A curiosidade é se é possível criar um select que devolva uma tabela com duas colunas, algo assim: |Numero|Nome| |1 |Jão | |2 |Zé | |3 |Tião| []s Bene -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. ___ 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
Re: [pgbr-geral] Auditoria em POstgreSQL -
Nós também André, não é temporária. Att, Celso Lorenzetti www.sysrs.com.br - Original Message - From: André Volpato To: fabriziome...@gmail.com ; Comunidade PostgreSQL Brasileira Sent: Friday, October 29, 2010 10:38 AM Subject: Re: [pgbr-geral] Auditoria em POstgreSQL - Com isso ao realizar a conexão com o PostgreSQL, nossa aplicação imediatamente roda a fc_startsession e faz uma cópia do conteúdo da variável $_SESSION (usamos PHP) para dentro da sessão do banco, e com isso toda informação que manipulamos em sessão a nível de aplicação fica disponível tb no banco de dados. Essas pls são simples, consistem em manipular pares de Chave/Valor... inclusive estamos testando uma forma de não usar tabelas temporárias para eliminar esse overhead. +1 usando essa mesma solução. Não uso tabelas temporárias, tenho uma tabela específica pra isso. Armazeno o conteúdo de _SESSION e busco usando o identificador de sessão (sessId). []´s, André Volpato -- ___ 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
Re: [pgbr-geral] Numero de linha de uma tabela
E ainda... se for na versão 9.0 tem: select row_number() over (), t.* from suatabela t; Neste caso tem que ter cuidado com o uso da cláusula ordem by... se for usá-la deve ser feito em uma subquery e o row_number() na query principal. sds Fábio Gibon - Original Message - From: Benedito A. Cruz b...@cria.org.br To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Sent: Friday, October 29, 2010 11:22 AM Subject: [pgbr-geral] Numero de linha de uma tabela Uma curiosidade minha: é possível, numa consulta, formatar a saída de forma que as linhas da tabela de saída venham numeradas? Por exemplo: fazendo uma consulta select Nome from clientes, a saída é uma tabela com uma coluna Nome. A curiosidade é se é possível criar um select que devolva uma tabela com duas colunas, algo assim: |Numero|Nome| |1 |Jão | |2 |Zé | |3 |Tião| []s Bene -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. ___ 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
Re: [pgbr-geral] Numero de linha de uma tabela
Em 29 de outubro de 2010 14:06, Fábio Gibon - Comex System gi...@comexsystem.com.br escreveu: E ainda... se for na versão 9.0 tem: select row_number() over (), t.* from suatabela t; Neste caso tem que ter cuidado com o uso da cláusula ordem by... se for usá-la deve ser feito em uma subquery e o row_number() na query principal. Na verdade esse recurso está disponível desde a versão 8.4 -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com Perfil Linkedin: http://br.linkedin.com/in/fabriziomello ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Numero de linha de uma tabela
Fabrízio, obrigado pela correção. sds Fábio Gibon - Original Message - From: Fabrízio de Royes Mello To: Comunidade PostgreSQL Brasileira Sent: Friday, October 29, 2010 12:21 PM Subject: Re: [pgbr-geral] Numero de linha de uma tabela Em 29 de outubro de 2010 14:06, Fábio Gibon - Comex System gi...@comexsystem.com.br escreveu: E ainda... se for na versão 9.0 tem: select row_number() over (), t.* from suatabela t; Neste caso tem que ter cuidado com o uso da cláusula ordem by... se for usá-la deve ser feito em uma subquery e o row_number() na query principal. Na verdade esse recurso está disponível desde a versão 8.4 -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com Perfil Linkedin: http://br.linkedin.com/in/fabriziomello -- ___ 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
Re: [pgbr-geral] Failover no Windows
Em 29/10/2010 11:04, JotaComm escreveu: Olá, Em 29 de outubro de 2010 10:49, Norberto Delle betode...@gmail.com mailto:betode...@gmail.com escreveu: Bom dia pessoal Eu configurei um servidor warm standby do PostgreSQL 9 no Windows 2008 R2 e estou testando o processos de failover. Quando crio o arquivo de trigger no local especificado no parâmetro 'trigger_file' do recovery.conf nada acontece. Alguém tem alguma idéia do que pode estar errado? Como você fez a criação do arquivo? Algum erro no Log do PostgreSQL? O que você considera que nada acontece? Obrigado Norberto ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto: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 Boa tarde Jota Examinando melhor a minha configuração percebi que não passei o parâmetro -t arquivo_trigger na chamada do pg_standby do recovery_command. Achei que fosse suficiente apenas definir o trigger_file. Agora tudo funcionou como o esperado. Obrigado pela atenção. Norberto ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] FW: Failover no Windows
Pessoal, estou fazendo um trabalho da faculdade e estou com algumas dúvidas. Por favor, me ajudem, já que, é claro, vcs são os melhores em Postgress. São estes os tópicos que ficaram mais dúvidas: 5. Estado Atual 7. Replicação e cluster. 9. Linguagens de programação 10. Capacidade de gerenciamento de dadosfalta 11. Número de conexões simultanea, número de processadores.falta 12. Estudo de caso de sucesso Se alguem puder acrescentar algo, ou me indicar fontes eu agradeço Atenciosamente, Jefferson Dias ___ 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
[pgbr-geral] REF. MONTAR SELECT.
Ola pessoal, Preciso montar um Select e estou colocando os neuronios pra funcionar, tenho o seguinte: TABELAS RELACIONADAS: Cliente,Dependente,Plano Tabela CLIENTE IDCLI NOME 1JUCA BALA 2MILA TULA 3PAULO TARSO Tabela DEPENDENTE ID IDCLI NOME PARENTESCO 11Juquinha Filho(a) 21Mariazinha Filho(a) 32MilinhaFilho(a) 42RitinhaFilho(a) 42FofinhaFilho(a) 53Paulinho Filho(a) Tabela PLANO ID PLANO QTDE_DEPENDENTE VALOR 1 PLANO A 1 4,90 2 PLANO B 2 9,90 3 PLANO C 3 14,90 PRECISO MONTAR UM SELECT COM RETORNO: CLIENTEDEPENDENTEVALOR JUCA JuquinhaFilho(a) 9,90 JUCA Mariazinha Filho(a) 9,90 - PLANO A MILA TULA Milinha Filho(a) 14,90 MILA TULA Ritinha Filho(a) 14,90 MILA TULA Fofinha Filho(a) 14,90 - PLANO B PAULOPaulinhoFilho(a)4,90 - PLANO C ALGUEM PODE DAR UMA DICA DE COMO MONTAR ESTE SELECT. Att, Paulo. VisualP Sistemas. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] REF. MONTAR SELECT.
Paulo, monte como você acredita que deve ser e a gente te ajuda a aparar as arestas, mas se entendi o teu problema é que precisas fazer outer join, pois podem haver dependentes sem plano, é isto? E ainda, não vejo o relacionamento com a tabela PLANO, não está faltando algum campo em Cliente ou uma outra tabela? abraços Fábio Henrique Gibon - Original Message - From: VisualP Sistemas To: Comunidade PostgreSQL Brasileira Sent: Friday, October 29, 2010 2:31 PM Subject: [pgbr-geral] REF. MONTAR SELECT. Ola pessoal, Preciso montar um Select e estou colocando os neuronios pra funcionar, tenho o seguinte: TABELAS RELACIONADAS: Cliente,Dependente,Plano Tabela CLIENTE IDCLI NOME 1JUCA BALA 2MILA TULA 3PAULO TARSO Tabela DEPENDENTE ID IDCLI NOME PARENTESCO 11Juquinha Filho(a) 21Mariazinha Filho(a) 32MilinhaFilho(a) 42RitinhaFilho(a) 42FofinhaFilho(a) 53Paulinho Filho(a) Tabela PLANO ID PLANO QTDE_DEPENDENTE VALOR 1 PLANO A 1 4,90 2 PLANO B 2 9,90 3 PLANO C 3 14,90 PRECISO MONTAR UM SELECT COM RETORNO: CLIENTEDEPENDENTEVALOR JUCA JuquinhaFilho(a) 9,90 JUCA Mariazinha Filho(a) 9,90 - PLANO A MILA TULA Milinha Filho(a) 14,90 MILA TULA Ritinha Filho(a) 14,90 MILA TULA Fofinha Filho(a) 14,90 - PLANO B PAULOPaulinhoFilho(a)4,90 - PLANO C ALGUEM PODE DAR UMA DICA DE COMO MONTAR ESTE SELECT. Att, Paulo. VisualP Sistemas. -- ___ 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
[pgbr-geral] Quantidade usuários conectados
Olá colegas! Existe alguma forma de saber quantos usuários existem conectados ao banco de dados? Obrigado Avelino ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Quantidade usuários conectados
SELECT COUNT(*) AS total FROM ( SELECT DISTINCT client_addr FROM pg_stat_activity ) AS x Em 29 de outubro de 2010 14:42, Avelino Brun avel...@databrum.com.br escreveu: Olá colegas! Existe alguma forma de saber quantos usuários existem conectados ao banco de dados? Obrigado Avelino ___ 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
Re: [pgbr-geral] Quantidade usuários conectados
SELECT COUNT(*) AS total FROM ( SELECT DISTINCT usename FROM pg_stat_activity ) AS x Em 29 de outubro de 2010 14:45, Emerson Hermann emersonherm...@gmail.com escreveu: SELECT COUNT(*) AS total FROM ( SELECT DISTINCT client_addr FROM pg_stat_activity ) AS x Em 29 de outubro de 2010 14:42, Avelino Brun avel...@databrum.com.br escreveu: Olá colegas! Existe alguma forma de saber quantos usuários existem conectados ao banco de dados? Obrigado Avelino ___ 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
Re: [pgbr-geral] Res: Res: Res: Escolha do mét odo de replicação
Charly Obrigado pela sugestão, mas dei uma pesquisada e é uma ferramenta externa ao banco certo? Com isso não estarei perdendo desempenho? Além disso o kettle possui algum controle para fazer extrações incrementais ? Em 29 de outubro de 2010 00:24, Charly Batista carl...@gmail.com escreveu: Thiago, boa noite! Talvez uma ferramenta de ETL te seja mais apropriado do que uma ferramenta de replicação. Existem algumas boas ferramentas de ETL disponíveis, e uma que gosto muito é o Kettle[1]. Com ele você consegue fazer extrações agendadas, como você deseja. Dá uma olhada, talvez te resolva o problema. [1] http://kettle.pentaho.com/ Att, -- Charly Batista Administrador de Banco de Dados http://javadevilopers.blogspot.com/ charlyfra...@gmail.com Linux user #391083 Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas idéias. George Bernard Shaw (1856-1950) Em 28 de outubro de 2010 16:15, Thiago Godoi thiagogodo...@gmail.comescreveu: Obrigado galera , vou pesquisar mais sobre o Slony então, porém ele possui essa opção de replicação agendada dos dados? Por exemplo eu conseguiria definir para ele replicar os dados gerados durante o dia , somente durante a noite? Em 28 de outubro de 2010 16:11, Renato Ricci renatoricc...@yahoo.com.brescreveu: Realmente, concordo com o JotaComm. Provavelmente o Slony seja ideal para sua situação. Com ele você pode escolher quais objetos deseja replicar para o banco slave... T+ __ *Renato R. Ricci* *Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente. O Futuro está em Nossas Mãos!*** -- *De:* JotaComm jota.c...@gmail.com *Para:* Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br *Enviadas:* Quinta-feira, 28 de Outubro de 2010 15:54:44 *Assunto:* Re: [pgbr-geral] Res: Res: Escolha do método de replicação Olá, Em 28 de outubro de 2010 15:32, Thiago Godoi thiagogodo...@gmail.comescreveu: É realmente já percebi que o hot-standby não é o ideal para a situação. Vou tentar especificar melhor o que desejamos fazer. Tenho um banco de Desenvolvimento onde eu tenho várias bases em que eu estou inserindo novas informações o tempo inteiro.Na máquina de produção a ideia é possuir algumas das bases do banco de Desenvolvimento , somente para consultas de clientes. Hum.. Que tal dar uma olhada no Slony [1] Meu problema seria como levar os dados do meu banco de Desenvolvimento para o banco de Produção (lembrando que seria somente uma parte do cluster), a ideia seria fazer essa atualização todo dia durante a madrugada, é possível algo incremental? [1] http://www.slony.info/ Em 28 de outubro de 2010 14:43, Renato Ricci renatoricc...@yahoo.com.br escreveu: Thiago, deixa eu ver se entendi.. você tem um ambiente de desenvolvimento onde você faz alterações físicas e lógicas no banco de dados. O que você quer fazer é aplicar essas alterações em um banco de produção? O que você vai querer aplicar no banco de produção? Somente o DDL? Ou as informações geradas em desenvolvimento tb? Se você usar um hot-standby, você poderá replicar DDL e informações (cópia fiel do banco) para produção. Não sei como isso impactaria no seu ambiente ai, pois você estará aplicando as alterações no banco de produção mas a aplicação (.exe ou alguma aplicação web) ainda ficará antiga. Se for alterações somente em Functions, triggers, views, ai de boa.. Geralmente as empresas costumam usar um banco hot-standby mais para contingência, ou seja, caso der algum problema no banco de produção, esse banco hot-standby assumiria a brinca. Geralmente tem-se os seguintes ambientes: Desenvolvimento Produção (Processo feito manualmente através de aplicação de scripts com alterações necessárias) Produção (transacional) hot-standby (automático) T+ __ *Renato R. Ricci* *Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente. O Futuro está em Nossas Mãos!*** -- *De:* Thiago Godoi thiagogodo...@gmail.com *Para:* Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br *Enviadas:* Quinta-feira, 28 de Outubro de 2010 14:25:49 *Assunto:* Re: [pgbr-geral] Res: Escolha do método de replicação Hum creio que usei a palavra errada então, não seria uma replicação. Seria migrar as atualizações para o banco de produção. Porém um detalhe que não havia citado antes, o banco de produção será usado somente para consultas. Em 28 de outubro de 2010 13:40, Renato Ricci renatoricc...@yahoo.com.br escreveu: Thiago, creio que o hot-standby não irá funcionar da maneira que você deseja, pois um banco neste estado não aceita transações pois ele roda
Re: [pgbr-geral] Add Topic: Escolha do método de r eplicação - Urgente
Em 28 de outubro de 2010 19:33, jmtofoli jmtof...@setadigital.com.brescreveu: Esse tópico do colega Thiago é uma excelente deixa, pois tenho que pesquisar e implementar (em 15 dias) um mecanismo de replicação que atenda a seguinte situação: Atualmente possuimos um sistema que integra matriz e filial de forma online, tendo a base de dados centralizada num servidor central que utiliza a internet para conexão das filiais. Isso tem funcionado a contento a bastante tempo, entretanto, um novo cliente esta exigindo algo que lhe garanta a disponibilidade das lojas quando a net não estiver disponivel, e acredito que a replicação seja a solução. Isso quer dizer que vc tem uma única base PostgreSQL com os clients acessando a mesma via internet... correto?? A idéia é a seguinte: Continuar tendo um servidor central e manter as lojas conectadas nesse servidor, porem, esse servidor central deve estar replicando seus dados para um servidor que fica em cada loja. Caso a net caia em alguma loja ou na matriz, o servidor que roda na loja deve assumir as operações, e é ai que acho que a coisa complica... Nesse caso, a loja continuaria rodando, atualizando essa base local. Voltando a net, esse servidor deve sincronizar seus dados com o servidor central e voltar a receber as atualizações do servidor central. Essa implementação me resolveria, a curto prazo, 2 problemas (e talvez me crie outros...) : 1) O do cliente com medo da indisponibilidade; 2) A questão da exigencia do PAF-ECF em manter o sistema funcionando independente da rede. Montar uma estrutura dessas não é nada trivial... não estou dizendo que seja impossível... mas não é trivial... pelo que pude perceber vc precisa de replicação multi-master assíncrona... e isso realmente tem mtos pontos a considerar e, inevitavelmente, vc terá de fazer algum ajuste na tua aplicação para suportar esses mecanismos. Antes de começar creio que devas dar uma lida no artigo [1] para poder entender um pouco mais o que estou querendo te dizer... infelizmente não temos uma solução mágica para esse teu problema... ainda mais com esse tempo necessário para implementação. [1] http://www.midstorm.org/~telles/2009/07/06/a-lenda-da-replicacao-multimaster-sincrona-em-bases-distribuidas/ -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com Perfil Linkedin: http://br.linkedin.com/in/fabriziomello ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] REF. MONTAR SELECT.
OK, tenho aqui os Selects seprados, vou juntar e posto aqui. - Original Message - From: Fábio Gibon - Comex System To: Comunidade PostgreSQL Brasileira Sent: Friday, October 29, 2010 4:41 PM Subject: Re: [pgbr-geral] REF. MONTAR SELECT. Paulo, monte como você acredita que deve ser e a gente te ajuda a aparar as arestas, mas se entendi o teu problema é que precisas fazer outer join, pois podem haver dependentes sem plano, é isto? E ainda, não vejo o relacionamento com a tabela PLANO, não está faltando algum campo em Cliente ou uma outra tabela? abraços Fábio Henrique Gibon - Original Message - From: VisualP Sistemas To: Comunidade PostgreSQL Brasileira Sent: Friday, October 29, 2010 2:31 PM Subject: [pgbr-geral] REF. MONTAR SELECT. Ola pessoal, Preciso montar um Select e estou colocando os neuronios pra funcionar, tenho o seguinte: TABELAS RELACIONADAS: Cliente,Dependente,Plano Tabela CLIENTE IDCLI NOME 1JUCA BALA 2MILA TULA 3PAULO TARSO Tabela DEPENDENTE ID IDCLI NOME PARENTESCO 11Juquinha Filho(a) 21Mariazinha Filho(a) 32MilinhaFilho(a) 42RitinhaFilho(a) 42FofinhaFilho(a) 53Paulinho Filho(a) Tabela PLANO ID PLANO QTDE_DEPENDENTE VALOR 1 PLANO A 1 4,90 2 PLANO B 2 9,90 3 PLANO C 3 14,90 PRECISO MONTAR UM SELECT COM RETORNO: CLIENTEDEPENDENTEVALOR JUCA JuquinhaFilho(a) 9,90 JUCA Mariazinha Filho(a) 9,90 - PLANO A MILA TULA Milinha Filho(a) 14,90 MILA TULA Ritinha Filho(a) 14,90 MILA TULA Fofinha Filho(a) 14,90 - PLANO B PAULOPaulinhoFilho(a)4,90 - PLANO C ALGUEM PODE DAR UMA DICA DE COMO MONTAR ESTE SELECT. Att, Paulo. VisualP Sistemas. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral __ NOD32 5575 (20101029) Information __ This message was checked by NOD32 antivirus system. http://www.eset.com -- E-mail verificado pelo Terra Anti-Spam. Para classificar esta mensagem como spam ou não spam, clique aqui. Verifique periodicamente a pasta Spam para garantir que apenas mensagens indesejadas sejam classificadas como Spam. -- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral __ NOD32 5575 (20101029) Information __ This message was checked by NOD32 antivirus system. http://www.eset.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] REF. MONTAR SELECT.
Em 29 de outubro de 2010 15:31, VisualP Sistemas p@terra.com.brescreveu: corte *PRECISO MONTAR UM SELECT COM RETORNO:* CLIENTEDEPENDENTEVALOR JUCA JuquinhaFilho(a) 9,90 JUCA Mariazinha Filho(a) 9,90 - PLANO A MILA TULA Milinha Filho(a) 14,90 MILA TULA Ritinha Filho(a) 14,90 MILA TULA Fofinha Filho(a) 14,90 - PLANO B PAULOPaulinhoFilho(a)4,90 - PLANO C Eu não testei, mas tenta ai: SELECT cli.nome, dep.nome, dep.parentesco, pla.valor, pla.plano FROM (SELECT c.idcli, c.nome count(*) as qtde_dependente FROM cliente c INNER JOIN dependente d ON d.idcli = c.idcli GROUP BY c.idcli, c.nome) AS cli INNER JOIN dependente dep ON dep.idcli = cli.idcli INNER JOIN plano pla ON pla.qtde_dependente = cli.qtde_dependente; Pelo que percebi a forma de juntar os planos com os clientes é pela quantidade de dependentes... -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com Perfil Linkedin: http://br.linkedin.com/in/fabriziomello ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] [Spam] Re: REF. MONTAR SELECT.
Blza Fabricio, vou testar aqui e ajustar para da o resultado esperado. - Original Message - From: Fabrízio de Royes Mello To: Comunidade PostgreSQL Brasileira Sent: Friday, October 29, 2010 5:04 PM Subject: [Spam] Re: [pgbr-geral] REF. MONTAR SELECT. Em 29 de outubro de 2010 15:31, VisualP Sistemas p@terra.com.br escreveu: corte PRECISO MONTAR UM SELECT COM RETORNO: CLIENTEDEPENDENTEVALOR JUCA JuquinhaFilho(a) 9,90 JUCA Mariazinha Filho(a) 9,90 - PLANO A MILA TULA Milinha Filho(a) 14,90 MILA TULA Ritinha Filho(a) 14,90 MILA TULA Fofinha Filho(a) 14,90 - PLANO B PAULOPaulinhoFilho(a)4,90 - PLANO C Eu não testei, mas tenta ai: SELECT cli.nome, dep.nome, dep.parentesco, pla.valor, pla.plano FROM (SELECT c.idcli, c.nome count(*) as qtde_dependente FROM cliente c INNER JOIN dependente d ON d.idcli = c.idcli GROUP BY c.idcli, c.nome) AS cli INNER JOIN dependente dep ON dep.idcli = cli.idcli INNER JOIN plano pla ON pla.qtde_dependente = cli.qtde_dependente; Pelo que percebi a forma de juntar os planos com os clientes é pela quantidade de dependentes... -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com Perfil Linkedin: http://br.linkedin.com/in/fabriziomello -- E-mail verificado pelo Terra Anti-Spam. Para classificar esta mensagem como spam ou não spam, clique aqui. Verifique periodicamente a pasta Spam para garantir que apenas mensagens indesejadas sejam classificadas como Spam. -- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral __ NOD32 5575 (20101029) Information __ This message was checked by NOD32 antivirus system. http://www.eset.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] REF. MONTAR SELECT.
SHOW DE BOLA , Fabricio, Com um pequeno ajuste fechou redondinho. Obrigado pela dica. Att, Paulo. - Original Message - From: Fabrízio de Royes Mello To: Comunidade PostgreSQL Brasileira Sent: Friday, October 29, 2010 5:04 PM Subject: [Spam] Re: [pgbr-geral] REF. MONTAR SELECT. Em 29 de outubro de 2010 15:31, VisualP Sistemas p@terra.com.br escreveu: corte PRECISO MONTAR UM SELECT COM RETORNO: CLIENTEDEPENDENTEVALOR JUCA JuquinhaFilho(a) 9,90 JUCA Mariazinha Filho(a) 9,90 - PLANO A MILA TULA Milinha Filho(a) 14,90 MILA TULA Ritinha Filho(a) 14,90 MILA TULA Fofinha Filho(a) 14,90 - PLANO B PAULOPaulinhoFilho(a)4,90 - PLANO C Eu não testei, mas tenta ai: SELECT cli.nome, dep.nome, dep.parentesco, pla.valor, pla.plano FROM (SELECT c.idcli, c.nome count(*) as qtde_dependente FROM cliente c INNER JOIN dependente d ON d.idcli = c.idcli GROUP BY c.idcli, c.nome) AS cli INNER JOIN dependente dep ON dep.idcli = cli.idcli INNER JOIN plano pla ON pla.qtde_dependente = cli.qtde_dependente; Pelo que percebi a forma de juntar os planos com os clientes é pela quantidade de dependentes... -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com Perfil Linkedin: http://br.linkedin.com/in/fabriziomello -- E-mail verificado pelo Terra Anti-Spam. Para classificar esta mensagem como spam ou não spam, clique aqui. Verifique periodicamente a pasta Spam para garantir que apenas mensagens indesejadas sejam classificadas como Spam. -- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral __ NOD32 5575 (20101029) Information __ This message was checked by NOD32 antivirus system. http://www.eset.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] REF. MONTAR SELECT.
Em 29 de outubro de 2010 17:30, VisualP Sistemas p@terra.com.brescreveu: SHOW DE BOLA , Fabricio, Com um pequeno ajuste fechou redondinho. Beleza... então posta ai a solução para fecharmos essa thread. -- Fabrízio de Royes Mello Blog sobre TI: http://fabriziomello.blogspot.com Perfil Linkedin: http://br.linkedin.com/in/fabriziomello ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Res: Res: Res: Escolha do mét odo de replicação
Thiago, boa noite! Em 29 de outubro de 2010 16:40, Thiago Godoi thiagogodo...@gmail.comescreveu: Charly Obrigado pela sugestão, mas dei uma pesquisada e é uma ferramenta externa ao banco certo? Com isso não estarei perdendo desempenho? De fato, toda ferramenta externa tende a perder um pouco de desempenho, mas como você falou em atualizações agendadas imaginei que essa diferença de performance não fosse ser significativa ao teu modelo de negócio. Além disso o kettle possui algum controle para fazer extrações incrementais ? Como é uma ferramenta de ETL, você pode não apenas criar extrações incrementais, como realizar transformação, adaptação dos dados... Enfim, ela te possibilita uma grande quantidade de possibilidades. Agora, é você dar uma estudada e avaliar se de fato se encaixa na solução que você necessita. Att, -- Charly Batista Administrador de Banco de Dados http://javadevilopers.blogspot.com/ charlyfra...@gmail.com Linux user #391083 Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas idéias. George Bernard Shaw (1856-1950) Em 29 de outubro de 2010 00:24, Charly Batista carl...@gmail.comescreveu: Thiago, boa noite! Talvez uma ferramenta de ETL te seja mais apropriado do que uma ferramenta de replicação. Existem algumas boas ferramentas de ETL disponíveis, e uma que gosto muito é o Kettle[1]. Com ele você consegue fazer extrações agendadas, como você deseja. Dá uma olhada, talvez te resolva o problema. [1] http://kettle.pentaho.com/ Att, -- Charly Batista Administrador de Banco de Dados http://javadevilopers.blogspot.com/ charlyfra...@gmail.com Linux user #391083 Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas idéias. George Bernard Shaw (1856-1950) Em 28 de outubro de 2010 16:15, Thiago Godoi thiagogodo...@gmail.comescreveu: Obrigado galera , vou pesquisar mais sobre o Slony então, porém ele possui essa opção de replicação agendada dos dados? Por exemplo eu conseguiria definir para ele replicar os dados gerados durante o dia , somente durante a noite? Em 28 de outubro de 2010 16:11, Renato Ricci renatoricc...@yahoo.com.br escreveu: Realmente, concordo com o JotaComm. Provavelmente o Slony seja ideal para sua situação. Com ele você pode escolher quais objetos deseja replicar para o banco slave... T+ __ *Renato R. Ricci* *Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente. O Futuro está em Nossas Mãos!*** -- *De:* JotaComm jota.c...@gmail.com *Para:* Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br *Enviadas:* Quinta-feira, 28 de Outubro de 2010 15:54:44 *Assunto:* Re: [pgbr-geral] Res: Res: Escolha do método de replicação Olá, Em 28 de outubro de 2010 15:32, Thiago Godoi thiagogodo...@gmail.comescreveu: É realmente já percebi que o hot-standby não é o ideal para a situação. Vou tentar especificar melhor o que desejamos fazer. Tenho um banco de Desenvolvimento onde eu tenho várias bases em que eu estou inserindo novas informações o tempo inteiro.Na máquina de produção a ideia é possuir algumas das bases do banco de Desenvolvimento , somente para consultas de clientes. Hum.. Que tal dar uma olhada no Slony [1] Meu problema seria como levar os dados do meu banco de Desenvolvimento para o banco de Produção (lembrando que seria somente uma parte do cluster), a ideia seria fazer essa atualização todo dia durante a madrugada, é possível algo incremental? [1] http://www.slony.info/ Em 28 de outubro de 2010 14:43, Renato Ricci renatoricc...@yahoo.com.br escreveu: Thiago, deixa eu ver se entendi.. você tem um ambiente de desenvolvimento onde você faz alterações físicas e lógicas no banco de dados. O que você quer fazer é aplicar essas alterações em um banco de produção? O que você vai querer aplicar no banco de produção? Somente o DDL? Ou as informações geradas em desenvolvimento tb? Se você usar um hot-standby, você poderá replicar DDL e informações (cópia fiel do banco) para produção. Não sei como isso impactaria no seu ambiente ai, pois você estará aplicando as alterações no banco de produção mas a aplicação (.exe ou alguma aplicação web) ainda ficará antiga. Se for alterações somente em Functions, triggers, views, ai de boa.. Geralmente as empresas costumam usar um banco hot-standby mais para contingência, ou seja, caso der algum problema no banco de produção, esse banco hot-standby assumiria a brinca. Geralmente tem-se os seguintes ambientes: Desenvolvimento Produção (Processo feito manualmente através de
[pgbr-geral] Fw: REF. MONTAR SELECT.
Ta na mão a solução. SELECT cli.nome, cli.idcli, dep.dependente, pla.valor, pla.plano, par.parentesco FROM (SELECT c.idcli, c.nome, count(*) as qtde_dependente FROM clifor c INNER JOIN dependentes d ON d.idcli = c.idcli GROUP BY c.idcli, c.nome) AS cli INNER JOIN dependentes dep ON dep.idcli = cli.idcli INNER JOIN plano plaON pla.idplano = cli.qtde_dependente INNER JOIN parentesparON par.idparente = dep.parentesco ORDER BY cli.nome; Att, Paulo. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] REF. MONTAR SELECT.
Em 29/10/10, VisualP Sistemasp@terra.com.br escreveu: Ola pessoal, Preciso montar um Select e estou colocando os neuronios pra funcionar, tenho o seguinte: TABELAS RELACIONADAS: Cliente,Dependente,Plano Tabela CLIENTE IDCLI NOME 1JUCA BALA 2MILA TULA 3PAULO TARSO Tabela DEPENDENTE ID IDCLI NOME PARENTESCO 11Juquinha Filho(a) 21Mariazinha Filho(a) 32MilinhaFilho(a) 42RitinhaFilho(a) 42FofinhaFilho(a) 53Paulinho Filho(a) Tabela PLANO ID PLANO QTDE_DEPENDENTE VALOR 1 PLANO A 1 4,90 2 PLANO B 2 9,90 3 PLANO C 3 14,90 PRECISO MONTAR UM SELECT COM RETORNO: CLIENTEDEPENDENTEVALOR JUCA JuquinhaFilho(a) 9,90 JUCA Mariazinha Filho(a) 9,90 - PLANO A MILA TULA Milinha Filho(a) 14,90 MILA TULA Ritinha Filho(a) 14,90 MILA TULA Fofinha Filho(a) 14,90 - PLANO B PAULOPaulinhoFilho(a)4,90 - PLANO C ALGUEM PODE DAR UMA DICA DE COMO MONTAR ESTE SELECT. Pelo que entendi você quer fazer o JOIN com tabela PLANO utilizando a quantidade de dependentes de cada cliente apurada na tabela DEPENDENTE. Agora não sei é bem isso porque seu exemplo não está de acordo, ou as referências aos planos estão erradas. Talvez devesse ser: JUCA - plano B MILA - plano C PAULO - plano A Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral