[pgbr-geral] Migracao/Atualizacao versao 8.2 para 9.2 (Windows)
Pessoal, bom dia! Estou assumindo o suporte PostgreSQL em um cliente e o cara ainda está com a versão 8.2, e pior, está em Windows e o cara quer que continue! Nunca peguei esse cenário, quais cuidados e pré-reqs devo ter para efetuar a migração da versão 8.2 para 9.2 (ou até mesmo a 9.3), lembrando que está em Windows? Obrigado e abraços comunidade! Att, Bruno Martins Damasceno - Skype: brunomd.md ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Migracao/Atualizacao versao 8.2 para 9.2 (Windows)
2013/10/1 Bruno Damasceno brunomd...@gmail.com: Estou assumindo o suporte PostgreSQL em um cliente e o cara ainda está com a versão 8.2, e pior, está em Windows e o cara quer que continue! Espero que cobres muito bem por assumir essa dor de cabeça. Nunca peguei esse cenário, quais cuidados e pré-reqs devo ter para efetuar a Primeiro lugar, ler com calma as notas de versão desde 8.3 até a 9.3. Segundo, exportar a base, importar para um servidor de testes, e arranjar testes extensivos dos sistemas. Provavelmente você descobrirá que os sistemas incorrem em vários problemas, principalmente por uso de conversões implícitas (se não me falha a memória). Corrija os problemas, e continue testando. Se possível, rode em paralelo durante algum tempo, e simule os eventos importantes (fechamento de períodos, por exemplo). migração da versão 8.2 para 9.2 (ou até mesmo a 9.3) Alguma razão para não ser a 9.3? O tempo que os testes levarão deve ser mais do que suficiente para que ela seja bem depurada, provavelmente há haverá a 9.3.1. lembrando que está em Windows? Convença a mudar, se possível. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: Migracao/Atualizacao versao 8.2 para 9.2 (Windows)
-Mensagem original- De: pgbr-geral [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Guimarães Faria Corcete DUTRA, Leandro Enviada em: terça-feira, 1 de outubro de 2013 09:48 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] Migracao/Atualizacao versao 8.2 para 9.2 (Windows) 2013/10/1 Bruno Damasceno brunomd...@gmail.com: Estou assumindo o suporte PostgreSQL em um cliente e o cara ainda está com a versão 8.2, e pior, está em Windows e o cara quer que continue! Espero que cobres muito bem por assumir essa dor de cabeça. Hehe Nunca peguei esse cenário, quais cuidados e pré-reqs devo ter para efetuar a Primeiro lugar, ler com calma as notas de versão desde 8.3 até a 9.3. Segundo, exportar a base, importar para um servidor de testes, e arranjar testes extensivos dos sistemas. Provavelmente você descobrirá que os sistemas incorrem em vários problemas, principalmente por uso de conversões implícitas (se não me falha a memória). Corrija os problemas, e continue testando. Se possível, rode em paralelo durante algum tempo, e simule os eventos importantes (fechamento de períodos, por exemplo). migração da versão 8.2 para 9.2 (ou até mesmo a 9.3) Alguma razão para não ser a 9.3? O tempo que os testes levarão deve ser mais do que suficiente para que ela seja bem depurada, provavelmente há haverá a 9.3.1. Não cara, pode ser a 9.3. lembrando que está em Windows? Convença a mudar, se possível. Farei o possível! Rsrs Obrigado! ___ 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] Ajuda com SQL (full outer join)
Bom dia a todos. Tenho as seguintes tabelas tb_venda loja venda 110 220 tb_meta loja meta 240 360 Eu precisava fazer uma consulta trazendo tudo de tudo, o que cruzar e o que não cruzar, para tal fiz o seguinte sql. select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 Obrigado pela ajuda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
2013/10/1 Thiago zan...@farmaponte.com.br: from tb_venda a full outer join tb_meta b on a.loja = b.loja Pode simplificar com ON loja, já que os nomes são consistentes. Se houver a restrição de integridade referencial, pode até fazer o NATURAL JOIN, sem precisar de ON. Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 Isso está funcionando como esperado, certo? O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Você pode dar o exemplo de como ficariam as tabelas base, nesse caso? Aliás, evite esses prefixos como ‘tb_’. Eles acabam atrapalhando à medida em que o modelo evolui e você substitui tabelas por visões e vice-versa. Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
Opa, Em 1 de outubro de 2013 10:50, Thiago zan...@farmaponte.com.br escreveu: Bom dia a todos. Tenho as seguintes tabelas tb_venda loja venda 110 220 tb_meta loja meta 240 360 Eu precisava fazer uma consulta trazendo tudo de tudo, o que cruzar e o que não cruzar, para tal fiz o seguinte sql. select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 Não conseguei entender exatamente o que você quer: Por que a loja 1 não deve aparecer no resultado? Pelo que vi aparecem somente os registros da tabela tb_meta. Obrigado pela ajuda. __**_ pgbr-geral mailing list pgbr-geral@listas.postgresql.**org.brpgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geralhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- 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] Utilizando pg_dump no crontab
Opa, Em 30 de setembro de 2013 11:43, Hugo Quinteiro h...@controlware.com.brescreveu: Bom dia, ** ** Executo o comando “/usr/bin/./pg_dump -U postgres -F c --file=/etc/publico/backup/$(date +%Y_%m_%d__%H_%M_%S).backup basededados” e consigo fazer o backup normalmente. Mas ao carregar o comando: “0 22 * * * /usr/bin/./pg_dump -U postgres -F c --file=/etc/publico/backup/$(date +%Y_%m_%d__%H_%M_%S).backup websac”, no crontab o Linux não executa o backup. Sugiro tirar ./pg_dump por /usr/bin/pg_dump. Outra possibilidade é você fazer um .sh e chama-lo no crontab, fica melhor até para você manipular as variáveis de data. ** ** Alguém pode me ajudar?? ** ** ** ** [image: logocw] *Hugo F. Quinteiro* Depto Auditoria 11 3018-1980 (Ramal 402) 11 9.8525-8270 h...@controlware.com.br em...@controlware.com.br www.controlware.com.br ** ** ** ** ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- JotaComm http://jotacomm.wordpress.com image001.png___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] PANIC: right sibling's left-link doesn't match
Opa, Em 30 de setembro de 2013 13:36, Adriano Espinoza de Oliveira adrianoespin...@gmail.com escreveu: Pessoal está parcialmente resolvido meu problema, não postei a resposta antes por falta de tempo mesmo. Na madrugada de quinta para sexta-feria não tive tempo fazer o dump e o restore, até tentei, mas a janela de tempo era curta e os sistema tinha q voltar as 06:00hs, então optei por tentar o reindex total, inclusive das tabelas do sistema, e resolveu. Fiz base a base e de lá pra cá está tudo bem, o servidor não está caindo mais. Mas tenho alguns questionamentos: Hoje vi a seguinte mensagem hoje, então suponho que ainda tenho algum problema com indices, alguma dica? 10.11.0.2 2013-09-30 13:08:59 BRT [24107]: [1-1] db=nutracom,user=postgres WARNING: could not remove relation 1663/105809227/572918907: Arquivo ou diretório não encontrado 10.11.0.2 2013-09-30 13:08:59 BRT [24107]: [2-1] db=nutracom,user=postgres WARNING: could not remove relation 1663/105809227/572918903: Arquivo ou diretório não encontrado 10.11.0.2 2013-09-30 13:08:59 BRT [24107]: [3-1] db=nutracom,user=postgres WARNING: could not remove relation 1663/105809227/572918901: Arquivo ou diretório não encontrado 10.11.0.2 2013-09-30 13:08:59 BRT [24107]: [4-1] db=nutracom,user=postgres WARNING: could not remove relation 1663/105809227/572918899: Arquivo ou diretório não encontrado 10.11.0.2 2013-09-30 13:08:59 BRT [24107]: [5-1] db=nutracom,user=postgres WARNING: could not remove relation 1663/105809227/572918894: Arquivo ou diretório não encontrado 10.11.0.2 2013-09-30 13:08:59 BRT [24107]: [6-1] db=nutracom,user=postgres WARNING: could not remove relation 1663/105809227/572918896: Arquivo ou diretório não encontrado 10.11.0.2 2013-09-30 13:08:59 BRT [24107]: [7-1] db=nutracom,user=postgres WARNING: could not remove relation 1663/105809227/572918898: Arquivo ou diretório não encontrado 10.11.0.2 2013-09-30 13:08:59 BRT [24107]: [8-1] db=nutracom,user=postgres WARNING: could not remove relation 1663/105809227/572918892: Arquivo ou diretório não encontrado Durante o reindex, utilizando o comando reindexdb -a, o reindex foi interrompido com a msg abaixo, passei a reindexar base a base e tudo bem, até chegar em uma determinada tabela, que não sei qual é, ele foi interrompido. Provavelmente é algum lixo ou backup pontual de um select ou coisa assim que foi feita no banco, mas como posso identificar essa tabela? [local] 2013-09-27 03:48:32 BRT [11290]: [290-1] db=cimed,user=postgres NOTICE: table itens_faltas_pcp was reindexed [local] 2013-09-27 03:48:32 BRT [11290]: [291-1] db=cimed,user=postgres NOTICE: table dash_board_vendas_local was reindexed [local] 2013-09-27 03:48:32 BRT [11290]: [292-1] db=cimed,user=postgres ERROR: could not create unique index [local] 2013-09-27 03:48:32 BRT [11290]: [293-1] db=cimed,user=postgres DETAIL: Table contains duplicated values. Provavelmente a corrupção dos índices causou registros duplicados na tabela. Faça o seguinte SELECT (usando o campo a chave primária que é provalvemente é onde está o problema). SET enable_indexscan TO OFF; SET enable_bitmapscan TO OFF; SET enable_tidscan TO OFF; Assim você força uma leitura sequencial. SELECT campodachaveprimaria,count(1) FROM tabela GROUP BY campodachaveprimaria HAVING count(1)1; Se o resultado for positivo é um problema, e você vai ter que corrigir os seus dados na mão. Agradeço a todos, Adriano Espinoza Em 30 de setembro de 2013 13:13, Adriano Espinoza de Oliveira adrianoespin...@gmail.com escreveu: Em 29 de setembro de 2013 09:51, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2013/9/27 Jean Pereira ad...@olostech.com On 09/26/2013 07:57 PM, Matheus de Oliveira wrote: 2013/9/26 Adriano Espinoza de Oliveira adrianoespin...@gmail.com Boa tarde pessoal. Boa noite... =D Hje de manhã tivemos too many clients no banco, eu não esta na empresa, e o adm de redes foi lá e derrubou um monte de conexões do postgres que ele achou q eram antigas... Bom, a alguns anos atrás, fiz isso também, se não me engano também era na versão 8.x (não lembro exato porque faz tempo, talvez seja a 7.x). Derrubou como? Se foi um kill -9 é bom dar um kill -9 `pidof cara_que_fez_isso`... =P Estou brincando viu, vamos lá ... O banco ficou inacessível, ele fez um restart do banco, que não subiu. Teve que apagar o PID na unha e depois o banco subiu... Ok. Normal... Depois disso, quando cheguei, notei que o banco estava se derrubando e subindo sozinho, exibindo essas mensagens: * 2013-09-26 12:09:25 BRT [18539]: [1-1] db=,user= LOG: server process (PID 23040) was terminated by signal 6* * 2013-09-26 12:09:25 BRT [18539]: [2-1] db=,user= LOG: terminating any other active server processes* *10.11.0.2 2013-09-26 12:09:25 BRT [23043]: [3-1] db=cimed,user=postgres WARNING: terminating connection because of crash of another
Re: [pgbr-geral] Tuning postgresql 9.3 e pgtune
Bom dia!!! Em 30 de setembro de 2013 11:41, Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org escreveu: 2013/9/30 Marco Aurélio Carvalho Feitosa ma...@tjrr.jus.br: As configurações de tuning das versões anteriores ainda se aplicam à versão 9.3 ? A tendência geral é de alteração de uma minoria dos parâmetros: simplificando algo, detalhando algo mais… para ver as diferenças, olhe as notas de versão. As configurações geradas pelo pgtune são confiáveis? Elas são úteis, mas não devem ser aplicadas cegamente. O certo é consultar o documento de referência para entender cada sugestão. Apenas um adendo ao mestre Dutra, os ajustes finos você precisa fazer, senão qual seria a graça? Algumas coisas previsam ser levadas em consideração: Servidor dedicado? (Isso tem influência no shared_buffers, por exemplo). Muitos relatórios complexos que exigem ordenação ou agrupamento? Se sim, talvez você precisa reconfigurar work_mem. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- 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] RES: RES: Utilizando pg_dump no crontab
Obrigado pela dica Rafael, tirei os parâmetros de data e mais um ; no final funcionou. Deixei assim o comando: 30 11 * * * /usr/bin/./pg_dump -h 192.168.1.148 -U postgres -F c --file=/etc/publico/backup/hugo/teste.backup websac; De: pgbr-geral [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Rafael Fialho Corrêa Enviada em: segunda-feira, 30 de setembro de 2013 15:45 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] RES: Utilizando pg_dump no crontab 2013/9/30 Hugo Quinteiro h...@controlware.com.br Log do CRON: From root@severalpha.localdomain Mon Sep 30 11:18:02 2013 Return-Path: root@severalpha.localdomain X-Original-To: root Delivered-To: root@severalpha.localdomain Received: by severalpha.localdomain (Postfix, from userid 0) id 13D2280641; Mon, 30 Sep 2013 11:18:02 -0300 (BRT) From: root@severalpha.localdomain (Cron Daemon) To: root@severalpha.localdomain Subject: Cron root@severalpha postgres /usr/bin/./pg_dump -U postgres -F c --file=/etc/publico/backup/hugo/$(date + É visível que ele não está reconhecendo o espaço do comando, na parte em que é somada a data ao resto do conteúdo, que geraria o nome do backup. Tente colocar entre , ou realizar de alguma outra forma.. Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: PATH=/bin:/usr/bin:/sbin:/usr/sbin X-Cron-Env: SHELL=/bin/sh X-Cron-Env: HOME=/root X-Cron-Env: LOGNAME=root X-Cron-Env: USER=root Message-Id: 20130930141802.13D2280641@severalpha.localdomain Date: Mon, 30 Sep 2013 11:18:02 -0300 (BRT) /bin/sh: -c: line 0: unexpected EOF while looking for matching `)' /bin/sh: -c: line 1: syntax error: unexpected end of file De: pgbr-geral [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Glauco Torres Enviada em: segunda-feira, 30 de setembro de 2013 11:49 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] Utilizando pg_dump no crontab Bom dia, Executo o comando /usr/bin/./pg_dump -U postgres -F c --file=/etc/publico/backup/$(date +%Y_%m_%d__%H_%M_%S).backup basededados e consigo fazer o backup normalmente. Mas ao carregar o comando: 0 22 * * * /usr/bin/./pg_dump -U postgres -F c --file=/etc/publico/backup/$(date +%Y_%m_%d__%H_%M_%S).backup websac, no crontab o Linux não executa o backup. Alguém pode me ajudar?? Sua linha parece estar certa, não testei. Você ja verificou o log do cron? O que é diz la? Att Glauco Torres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []'s ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
Em 01/10/13, Thiagozan...@farmaponte.com.br escreveu: Bom dia a todos. Tenho as seguintes tabelas tb_venda loja venda 110 220 tb_meta loja meta 240 360 Eu precisava fazer uma consulta trazendo tudo de tudo, o que cruzar e o que não cruzar, para tal fiz o seguinte sql. select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 Obrigado pela ajuda. Pelo que consegui entender seria: select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja WHERE a.loja IS NULL; que corresponde a sua descrição mas que não corresponde a seu exemplo. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
On 01/10/2013 11:41, Osvaldo Kussama wrote: Em 01/10/13, Thiagozan...@farmaponte.com.br escreveu: Bom dia a todos. Tenho as seguintes tabelas tb_venda loja venda 110 220 tb_meta loja meta 240 360 Eu precisava fazer uma consulta trazendo tudo de tudo, o que cruzar e o que não cruzar, para tal fiz o seguinte sql. select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 Obrigado pela ajuda. Pelo que consegui entender seria: select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja WHERE a.loja IS NULL; que corresponde a sua descrição mas que não corresponde a seu exemplo. Osvaldo Osvaldo, boa tarde. Mas em alguns casos a minha tabela tb_venda vai estar vazia, neste caso não está trazendo nenhum registro da tabela tb_meta. Gostaria de trazer todos os registros da tb_meta tendo a tb_venda como tabela da esquerda. No exemplo que dei, tenho 2 registros em cada tabela, mas no caso de não ter nada na tabela tb_venda (esquerda/principal) não está trazendo nada da tb_meta (direita). ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
On 01/10/2013 11:10, JotaComm wrote: Opa, Em 1 de outubro de 2013 10:50, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.br escreveu: Bom dia a todos. Tenho as seguintes tabelas tb_venda loja venda 110 220 tb_meta loja meta 240 360 Eu precisava fazer uma consulta trazendo tudo de tudo, o que cruzar e o que não cruzar, para tal fiz o seguinte sql. select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 Não conseguei entender exatamente o que você quer: Por que a loja 1 não deve aparecer no resultado? Pelo que vi aparecem somente os registros da tabela tb_meta. Obrigado pela ajuda. _ 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 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- JotaComm http://jotacomm.wordpress.com JotaComm, boa tarde. Eu questionei no caso de tabela tb_venda estar vazia, como faria para trazer os registros da tb_meta. Como se eu tivesse a seguinte estrutura: tb_venda loja venda tb_meta loja meta 240 360 Preciso ter o resultado abaixo utilizando a tabela tb_venda como esquerda (principal). loja venda meta 20 40 30 60 Acontece que em determinados momentos a mesma pode estar vazia e neste caso não está trazendo as metas. Obrigado! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
On 01/10/2013 10:57, Guimarães Faria Corcete DUTRA, Leandro wrote: 2013/10/1 Thiago zan...@farmaponte.com.br: from tb_venda a full outer join tb_meta b on a.loja = b.loja Pode simplificar com ON loja, já que os nomes são consistentes. Se houver a restrição de integridade referencial, pode até fazer o NATURAL JOIN, sem precisar de ON. Obrigado pela dica, não conhecia esta sintaxe. Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 Isso está funcionando como esperado, certo? Sim, quando tenho registro na tabela tb_venda ele me traz da forma que preciso, o problema é quando a tb_venda está vazia e a tabela tb_meta contém registros, neste caso não está trazendo nada. O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Você pode dar o exemplo de como ficariam as tabelas base, nesse caso? Da seguinte forma: tb_venda loja venda tb_meta loja meta 240 360 Neste caso, tendo a tabela tb_venda como principal (esquerda) gostaria de ter o seguinte resultado: loja venda meta 20 40 30 60 Aliás, evite esses prefixos como ‘tb_’. Eles acabam atrapalhando à medida em que o modelo evolui e você substitui tabelas por visões e vice-versa. Obrigado por essa dica também. Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 ___ 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] Ajuda com SQL (full outer join)
Opa, Em 1 de outubro de 2013 12:37, Thiago zan...@farmaponte.com.br escreveu: On 01/10/2013 11:10, JotaComm wrote: Opa, Em 1 de outubro de 2013 10:50, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.**br zan...@farmaponte.com.br escreveu: Bom dia a todos. Tenho as seguintes tabelas tb_venda loja venda 110 220 tb_meta loja meta 240 360 Eu precisava fazer uma consulta trazendo tudo de tudo, o que cruzar e o que não cruzar, para tal fiz o seguinte sql. select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 Não conseguei entender exatamente o que você quer: Por que a loja 1 não deve aparecer no resultado? Pelo que vi aparecem somente os registros da tabela tb_meta. Obrigado pela ajuda. __**___ pgbr-geral mailing list pgbr-geral@listas.postgresql._**_org.br mailto:pgbr-geral@listas.**postgresql.org.brpgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.**__br/cgi-bin/mailman/listinfo/** __pgbr-geral https://listas.postgresql.**org.br/cgi-bin/mailman/** listinfo/pgbr-geralhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- JotaComm http://jotacomm.wordpress.com JotaComm, boa tarde. Eu questionei no caso de tabela tb_venda estar vazia, como faria para trazer os registros da tb_meta. Como se eu tivesse a seguinte estrutura: tb_venda loja venda tb_meta loja meta 240 360 Preciso ter o resultado abaixo utilizando a tabela tb_venda como esquerda (principal). loja venda meta 20 40 30 60 Acontece que em determinados momentos a mesma pode estar vazia e neste caso não está trazendo as metas. Ainda não consegui entender (Confuso ainda): Por exemplo, na tabela tb_venda não tem o código 3, porém você quer que apareça no resultado, logo se você usar a tabela tb_venda como principal isso não vai acontecer (LEFT OUTER JOIN). Existem alguma relação entre a coluna meta de tb_meta e a coluna venda de tb_venda. Algo como se o valor de meta (tb_meta) for maior ou igual a venda (tb_venda)? Obrigado! __**_ pgbr-geral mailing list pgbr-geral@listas.postgresql.**org.brpgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geralhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- 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] Ajuda com SQL (full outer join)
On 01/10/2013 13:49, JotaComm wrote: Opa, Em 1 de outubro de 2013 12:37, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.br escreveu: On 01/10/2013 11:10, JotaComm wrote: Opa, Em 1 de outubro de 2013 10:50, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.br mailto:zan...@farmaponte.com.__br mailto:zan...@farmaponte.com.br escreveu: Bom dia a todos. Tenho as seguintes tabelas tb_venda loja venda 110 220 tb_meta loja meta 240 360 Eu precisava fazer uma consulta trazendo tudo de tudo, o que cruzar e o que não cruzar, para tal fiz o seguinte sql. select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 Não conseguei entender exatamente o que você quer: Por que a loja 1 não deve aparecer no resultado? Pelo que vi aparecem somente os registros da tabela tb_meta. Obrigado pela ajuda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br http://org.br mailto:pgbr-geral@listas.__postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.__org.br/cgi-bin/mailman/__listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- JotaComm http://jotacomm..wordpress.com http://jotacomm.wordpress.com JotaComm, boa tarde. Eu questionei no caso de tabela tb_venda estar vazia, como faria para trazer os registros da tb_meta. Como se eu tivesse a seguinte estrutura: tb_venda loja venda tb_meta loja meta 240 360 Preciso ter o resultado abaixo utilizando a tabela tb_venda como esquerda (principal). loja venda meta 20 40 30 60 Acontece que em determinados momentos a mesma pode estar vazia e neste caso não está trazendo as metas. Ainda não consegui entender (Confuso ainda): Por exemplo, na tabela tb_venda não tem o código 3, porém você quer que apareça no resultado, logo se você usar a tabela tb_venda como principal isso não vai acontecer (LEFT OUTER JOIN). Existem alguma relação entre a coluna meta de tb_meta e a coluna venda de tb_venda. Algo como se o valor de meta (tb_meta) for maior ou igual a venda (tb_venda)? Obrigado! _ 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 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- JotaComm http://jotacomm.wordpress.com Não, na verdade o campo de referencia é o loja. É que quando comecei a utilizar o left outer join eu imaginei que ele traria de qualquer dos lados, mas viajei. Vou criar uma subconsulta com union nas tabelas antes de cruzar, acredito ser a melhor solução. Algo como: select tm.loja from ( select loja from tb_venda union all select loja from tb_meta ) as tm group by tm.loja E depois utilizar o resultado disso para cruzar com as outras. Obrigado pela ajuda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
Em 01/10/13, Thiagozan...@farmaponte.com.br escreveu: On 01/10/2013 13:49, JotaComm wrote: Opa, Em 1 de outubro de 2013 12:37, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.br escreveu: On 01/10/2013 11:10, JotaComm wrote: Opa, Em 1 de outubro de 2013 10:50, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.br mailto:zan...@farmaponte.com.__br mailto:zan...@farmaponte.com.br escreveu: Bom dia a todos. Tenho as seguintes tabelas tb_venda loja venda 110 220 tb_meta loja meta 240 360 Eu precisava fazer uma consulta trazendo tudo de tudo, o que cruzar e o que não cruzar, para tal fiz o seguinte sql. select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 Não conseguei entender exatamente o que você quer: Por que a loja 1 não deve aparecer no resultado? Pelo que vi aparecem somente os registros da tabela tb_meta. Obrigado pela ajuda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br http://org.br mailto:pgbr-geral@listas.__postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.__org.br/cgi-bin/mailman/__listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- JotaComm http://jotacomm..wordpress.com http://jotacomm.wordpress.com JotaComm, boa tarde. Eu questionei no caso de tabela tb_venda estar vazia, como faria para trazer os registros da tb_meta. Como se eu tivesse a seguinte estrutura: tb_venda loja venda tb_meta loja meta 240 360 Preciso ter o resultado abaixo utilizando a tabela tb_venda como esquerda (principal). loja venda meta 20 40 30 60 Acontece que em determinados momentos a mesma pode estar vazia e neste caso não está trazendo as metas. Ainda não consegui entender (Confuso ainda): Por exemplo, na tabela tb_venda não tem o código 3, porém você quer que apareça no resultado, logo se você usar a tabela tb_venda como principal isso não vai acontecer (LEFT OUTER JOIN). Existem alguma relação entre a coluna meta de tb_meta e a coluna venda de tb_venda. Algo como se o valor de meta (tb_meta) for maior ou igual a venda (tb_venda)? Obrigado! _ 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 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- JotaComm http://jotacomm.wordpress.com Não, na verdade o campo de referencia é o loja. É que quando comecei a utilizar o left outer join eu imaginei que ele traria de qualquer dos lados, mas viajei. Vou criar uma subconsulta com union nas tabelas antes de cruzar, acredito ser a melhor solução. Algo como: select tm.loja from ( select loja from tb_venda union all select loja from tb_meta ) as tm group by tm.loja E depois utilizar o resultado disso para cruzar com as outras. Não vejo sentido em utilizar o GROUP BY nesta consulta, é só eliminar a opção ALL da UNION [1]. select loja from tb_venda union select loja from tb_meta; Osvaldo [1] http://www.postgresql.org/docs/current/interactive/queries-union.html query1 UNION [ALL] query2 UNION effectively appends the result of query2 to the result of query1 (although there is no guarantee that this is the order in which the rows are actually returned). Furthermore, it eliminates duplicate rows from its result, in the same way as DISTINCT, unless UNION ALL is used. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br
Re: [pgbr-geral] Ajuda com SQL (full outer join)
Em 01/10/13, Thiagozan...@farmaponte.com.br escreveu: On 01/10/2013 11:41, Osvaldo Kussama wrote: Em 01/10/13, Thiagozan...@farmaponte.com.br escreveu: Bom dia a todos. Tenho as seguintes tabelas tb_venda loja venda 110 220 tb_meta loja meta 240 360 Eu precisava fazer uma consulta trazendo tudo de tudo, o que cruzar e o que não cruzar, para tal fiz o seguinte sql. select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja Como resultado eu teria os seguintes dados: loja venda meta 1100 22040 30 60 O que fazer quando eu não tenho registros na tabela tb_venda, tenho apenas na tabela meta? Gostaria que viesse o seguinte resultado: loja venda meta 20 40 30 60 Obrigado pela ajuda. Pelo que consegui entender seria: select coalesce(a.loja,b.loja) as loja, coalesce(a.venda,0) as venda, coalesce(b.meta,0) as meta from tb_venda a full outer join tb_meta b on a.loja = b.loja WHERE a.loja IS NULL; que corresponde a sua descrição mas que não corresponde a seu exemplo. Osvaldo Osvaldo, boa tarde. Mas em alguns casos a minha tabela tb_venda vai estar vazia, neste caso não está trazendo nenhum registro da tabela tb_meta. Gostaria de trazer todos os registros da tb_meta tendo a tb_venda como tabela da esquerda. No exemplo que dei, tenho 2 registros em cada tabela, mas no caso de não ter nada na tabela tb_venda (esquerda/principal) não está trazendo nada da tb_meta (direita). Verifique se é isto que deseja: select b.loja as loja, coalesce(a.venda,0) as venda, b.meta as meta from tb_meta b left outer join tb_venda a on a.loja = b.loja; Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
2013/10/1 Matheus de Oliveira matioli.math...@gmail.com: O NATURAL JOIN não tem nada a ver com integridade referencial, ele basicamente faz um INNER JOIN de todas as colunas com o mesmo nome nas duas tabelas. Verdade. Lapso meu, mil perdões. Em casos como esse, eu recomendaria o USING. Certíssimo. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
2013/10/1 Matheus de Oliveira matioli.math...@gmail.com: O NATURAL JOIN não faz sentido no cenário do OP, porque ele quer um outer. NATURAL FULL OUTER JOIN, pelo que entendi. Só para constar, concordo que o USING fica mais robusto. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Utilizando pg_dump no crontab
2013/9/30 Hugo Quinteiro h...@controlware.com.br Bom dia, ** ** Executo o comando “/usr/bin/./pg_dump -U postgres -F c --file=/etc/publico/backup/$(date +%Y_%m_%d__%H_%M_%S).backup basededados” e consigo fazer o backup normalmente. Mas ao carregar o comando: “0 22 * * * /usr/bin/./pg_dump -U postgres -F c --file=/etc/publico/backup/$(date +%Y_%m_%d__%H_%M_%S).backup websac”, no crontab o Linux não executa o backup. ** ** Alguém pode me ajudar?? ** O problema que você está enfrentando é o fato do crontab tratar um símbolo de porcentagem de forma especial. Ele faz um parser e considera cada % como uma nova linha para mandar ao shell. Nesse caso a solução para seus problemas seria: 1. Adicionar escapes: 0 22 * * * /usr/bin/./pg_dump -U postgres -F c --file=/etc/publico/backup/$(date +\%Y_\%m_\%d__\%H_\%M_\%S).backup websac 2. Ou, colocar a execução do comando num script .sh e chamá-lo pelo cron. Eu acho a segunda solução mais fácil e mais adequada, principalmente na hora de dar manutenção. OBS: Um backup salvando em /etc/? Não acha que seria bom rever os locais de seus arquivos? Procure por Linux FHS para saber mais. Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
2013/10/1 Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org 2013/10/1 Matheus de Oliveira matioli.math...@gmail.com: O NATURAL JOIN não tem nada a ver com integridade referencial, ele basicamente faz um INNER JOIN de todas as colunas com o mesmo nome nas duas tabelas. Verdade. Lapso meu, mil perdões. Em casos como esse, eu recomendaria o USING. Certíssimo. Tranquilo, acontece... =D At. -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
2013/10/1 Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org 2013/10/1 Matheus de Oliveira matioli.math...@gmail.com: O NATURAL JOIN não faz sentido no cenário do OP, porque ele quer um outer. NATURAL FULL OUTER JOIN, pelo que entendi. Só para constar, concordo que o USING fica mais robusto. Eu exclui o NATURAL JOIN da minha cabeça de certa forma que até esqueci que ele funciona com OUTER JOINs... Viu como todos temos lapsos?! =P Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SQL (full outer join)
Vou criar uma subconsulta com union nas tabelas antes de cruzar, acredito ser a melhor solução. Algo como: select tm.loja from ( select loja from tb_venda union all select loja from tb_meta ) as tm group by tm.loja E depois utilizar o resultado disso para cruzar com as outras. Não vejo sentido em utilizar o GROUP BY nesta consulta, é só eliminar a opção ALL da UNION [1]. select loja from tb_venda union select loja from tb_meta; Osvaldo Obrigado pela dica. Está ai o problema de aprender algo e utilizar para sempre sem verificar os comando parecidos. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral