Marcelo,
O nome de indice tem que ser único no banco, verifique se ele já existe
em outras tabelas que não seja para a que você está criando.
No caso de não existir talvez o banco tenha se perdido por algum
motivo. Tente identifica-lo.
Att.
-----Mensagem original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de [EMAIL PROTECTED]
Enviada em: terça-feira, 12 de setembro de 2006 14:57
Para: [email protected]
Assunto: Digest Brasil-Usuarios, volume 289, assunto 2
Enviar submissões para a lista de discussão Brasil-Usuarios para
[email protected]
Para se cadastrar ou descadastrar via WWW, visite o endereço
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
ou, via email, envie uma mensagem com a palavra 'help' no assunto ou corpo da
mensagem para
[EMAIL PROTECTED]
Você poderá entrar em contato com a pessoa que gerencia a lista pelo endereço
[EMAIL PROTECTED]
Quando responder, por favor edite sua linha Assunto assim ela será mais
específica que "Re: Contents of Brasil-Usuarios digest..."
Tópicos de Hoje:
1. Re: artigo para iniciantes (jorge vilela)
2. Re: Eventos Notify e Listen (Cristiano Panvel)
3. Re: artigo para iniciantes (Ricardo Carlini Sperandio)
4. Criacao de indices (Marcelo Magno)
5. Re: Eventos Notify e Listen (Cristiano Panvel)
6. Re: Ainda não consegui : Carregar as Bases de Dados (Rudinei Dias)
7. Re: Eventos Notify e Listen (Daniel Loureiro)
----------------------------------------------------------------------
Message: 1
Date: Tue, 12 Sep 2006 09:02:45 -0400
From: "jorge vilela" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] artigo para iniciantes
To: " Grupo de Usuários do PostgreSQL no Brasil "
<[email protected]>
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Parabéns pela iniciativa Fábio, com certeza isso ainda irá ajudar muita gente
que tem vontade de aprender.
On 9/10/06, Fabio Telles Rodriguez <[EMAIL PROTECTED]> wrote:
> Resolvi escrever um artigo dedicado a iniciantes em PostgreSQL.
> Dúvidas, comentários e sugestões para melhorar o texto são bem vindos.
>
> O link é este:
> http://www.midstorm.org/~telles/modules/news/article.php?storyid=89
>
> Atenciosamente,
> Fábio Telles
> --
> site: http://www.midstorm.org/~telles/
> e-mail: [EMAIL PROTECTED]
> jabber: [EMAIL PROTECTED]
> sip:[EMAIL PROTECTED]
>
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte
> o manual http://pgdocptbr.sourceforge.net/
>
> Para editar suas opções ou sair da lista acesse a página da lista em:
> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>
------------------------------
Message: 2
Date: Tue, 12 Sep 2006 10:19:07 -0300
From: "Cristiano Panvel" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] Eventos Notify e Listen
To: [email protected]
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Beleza,
Meu cenário é mais ou menos o seguinte:
Estou programando em Qt com C++, e a aplicação será um atendimento de chamadas
crítico, então por exemplo um usúario X inseriu uma chamada, no banco de dados
imediatamente ela deve aparecer, para os outros 50 atendentes.
Mais todos poderam inserir e encerrar a chamada, entendeu.
Eu poderia usar sockets para isso ou RPC mais sou novo em Qt não gostaria de me
arriscar tanto.
E não gostaria de ter que ficar tando refresh na tela a cada segundo isso fica
muito feio, somente quando for necessário.
Qual é a sugestão para o cenário.
Cris
On 9/11/06, Daniel Loureiro <[EMAIL PROTECTED]> wrote:
> Cristiano Panvel escreveu:
> > Oi pessoal,
> >
> > Sou novo aqui na lista,
> >
> > bom estou fazendo uma aplicacao que necessitara fazer atualizações
> > constantes, então pesquisando fiquei sabendo que o postgresql
> > suportar eventos NOTIFY e LISTEN gostaria de saber como faço para usar isso.
> >
> > Alguem poderia me ajudar.
> >
> > Cris.
>
> Quando você abre uma conexão, você pode enviar um comando como "LISTEN
> um_identificador_qualquer". Daí sempre que alguma outra conexão enviar
> um comando "NOTIFY um_identificador_qualquer", você receberá um retorno.
>
> Ex.:
> entra no "psql" ("/usr/local/pgsql/bin/psql template1 postgres") e digita:
>
> LISTEN meu_id;
>
> depois, abre um segundo terminal, chama o "psql" novamente, e digita:
>
> NOTIFY meu_id;
>
> você vai receber uma notificação no primeiro terminal.
>
> Como você pode ver, notificações por si só não são muito úteis. O real
> poder delas aparece quando usado em conjunto com regras ("rules") ou
> gatilhos ("triggers"). Você pode, por exemplo, receber notificações
> sempre que for inserido um registro em uma determinada tabela.
>
> Ex.:
>
> CREATE RULE rInsereTab AS ON INSERT TO tabela DO NOTIFY nInsereTab
>
> com este comando, qualquer conexão que tenha chamado um "LISTEN
> nInsereTab" irá receber uma notificação ao ser inserido um registro em
> "tabela".
>
> Porém, no caso de querer receber uma notificação de exclusões ou
> alterações, a coisa não é tão fácil. Isto porque, uma destas operações
> pode afetar vários registros de uma vez só. Nestes casos, devemos usar
> gatilhos chamando funções.
>
> Ex. em "plpgsql" para alterações:
>
> CREATE FUNCTION fAlteraTab() RETURNS OPAQUE AS '
> BEGIN
> NOTIFY nAlteraTab;
> RETURN OLD;
> END; '
> LANGUAGE 'plpgsql';
>
> CREATE TRIGGER tAlteraTab AFTER UPDATE ON tabela FOR EACH ROW
> EXECUTE PROCEDURE fAlteraTab;
>
> Ex. de exclusões:
>
> CREATE FUNCTION fExcluiTab() RETURNS OPAQUE AS '
> BEGIN
> NOTIFY nExcluiTab;
> RETURN OLD;
> END; '
> LANGUAGE 'plpgsql';
>
> CREATE TRIGGER tExcluiTab AFTER DELETE ON tabela FOR EACH ROW
> EXECUTE PROCEDURE fExcluiTab();
>
> Daí, você acaba inevitavelmente entrando no mundo das "stored procedures".
>
> Depois, entra a parte de fazer o seu cliente ouvir estas notificações.
> No Delphi existe uma paleta de componentes gratuita chamada "Zeos",
> que facilita bastante o trabalho. Agora, se você quiser fazer "no
> braço", você terá que criar um processo (através de chamadas do SO)
> que conterá um laço infinito (ou pelo menos até acabar o programa).
> Este processo deverá ficar lendo uma determinada função de retorno do
> postgresql.
>
> Se precisar de mais ajuda, avisa.
>
> Sds,
> Daniel Loureiro.
>
>
>
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte
> o manual http://pgdocptbr.sourceforge.net/
>
> Para editar suas opções ou sair da lista acesse a página da lista em:
> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>
>
>
------------------------------
Message: 3
Date: Tue, 12 Sep 2006 10:56:03 -0300
From: "Ricardo Carlini Sperandio" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] artigo para iniciantes
To: " Grupo de Usuários do PostgreSQL no Brasil "
<[email protected]>
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Uma pequena correcao:
No item 9. . Existem ->impresas<- que chegam (...)
Mto bom o artigo,
On 9/12/06, jorge vilela <[EMAIL PROTECTED]> wrote:
> Parabéns pela iniciativa Fábio, com certeza isso ainda irá ajudar
> muita gente que tem vontade de aprender.
>
> On 9/10/06, Fabio Telles Rodriguez <[EMAIL PROTECTED]> wrote:
> > Resolvi escrever um artigo dedicado a iniciantes em PostgreSQL.
> > Dúvidas, comentários e sugestões para melhorar o texto são bem vindos.
> >
> > O link é este:
> > http://www.midstorm.org/~telles/modules/news/article.php?storyid=89
> >
> > Atenciosamente,
> > Fábio Telles
> > --
> > site: http://www.midstorm.org/~telles/
> > e-mail: [EMAIL PROTECTED]
> > jabber: [EMAIL PROTECTED]
> > sip:[EMAIL PROTECTED]
> >
> > _______________________________________________
> > Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar
> > consulte o manual http://pgdocptbr.sourceforge.net/
> >
> > Para editar suas opções ou sair da lista acesse a página da lista em:
> > http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> >
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte
> o manual http://pgdocptbr.sourceforge.net/
>
> Para editar suas opções ou sair da lista acesse a página da lista em:
> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>
--
Ricardo Carlini Sperandio
Analista/Consultor Linux
Connectcom - GISUT / CEF
GEDEL: Grupo Especializado em Desenvolvimento Linux DCC/UFMG - Algum período
O homem que nunca cometeu um erro nunca fará nenhuma outra coisa.
------------------------------
Message: 4
Date: Tue, 12 Sep 2006 11:52:48 -0300
From: "Marcelo Magno" <[EMAIL PROTECTED]>
Subject: [PostgreSQL-Brasil] Criacao de indices
To: Grupo de Usuários do PostgreSQL no Brasil
<[email protected]>
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"
Pessoal,
Toda a noite, eu dropo e recrio algumas tabelas de um sistema legado, eu tb
recrio os indices e faço o vaccum em cada tabela criada.
Esta acontecendo que ao tentar executar o seguinte statement:
CREATE INDEX mneu_cli_indx
ON files
USING btree (mneu_cli)
Eu estou tomando o seguinte erro:
ERROR: relation "mneu_cli_indx" already exists
Jah procurei em tudo quanto eh lugar e não acho lugar onde esse indice esteja
criado... Isso acontece com outros statements de criacao de indices, uns
funcionam e outros não. Alguem poderia me dar uma luz?
Grato pela ajuda,
Marcelo Magno
------------------------------
Message: 5
Date: Tue, 12 Sep 2006 11:59:05 -0300
From: "Cristiano Panvel" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] Eventos Notify e Listen
To: [email protected]
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"
Beleza,
Meu cenário é mais ou menos o seguinte:
Estou programando em Qt com C++, e a aplicação será um atendimento de
chamadas crítico, então por exemplo um usúario X inseriu uma chamada,
no banco de dados imediatamente ela deve aparecer, para os outros 50
atendentes.
Mais todos poderam inserir e encerrar a chamada, entendeu.
Eu poderia usar sockets para isso ou RPC mais sou novo em Qt não
gostaria de me arriscar tanto.
E não gostaria de ter que ficar tando refresh na tela a cada segundo
isso fica muito feio, somente quando for necessário.
Qual é a sugestão para o cenário.
Cris
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL:
http://pgfoundry.org/pipermail/brasil-usuarios/attachments/20060912/d31380b9/attachment-0001.html
------------------------------
Message: 6
Date: Tue, 12 Sep 2006 12:12:40 -0300
From: Rudinei Dias <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] Ainda não consegui : Carregar as
Bases de Dados
To: Grupo de Usuários do PostgreSQL no Brasil
<[email protected]>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
1) Você exportou (com pg_dump) a base de dados em arquivos separados
(dados da estrutura)?
se windows
faça uma .bat e oloque o pg_dump
rem "exportando a estrutura"
"c:\Program Files\PostgreSQL\8.1\bin\pg_dump.exe" -s -u -f
pgipuc_desenv_structure.sql nome_da_base
rem "exportando os dados"
"c:\Program Files\PostgreSQL\8.1\bin\pg_dump.exe" -a -u -f
pgipuc_desenv_data.sql nome_da_base
pause
se linux
/usr/local/bin/pg_dump -s -u -f stru.sql nome_da_base
/usr/local/bin/pg_dump -a -u -f data.sql nome_da_base
para facilitar, eu costumo separar o arquivo de estrutura em 2 - um
contento a criação das tabelas e outro os índices
procure a primeira palavra "index" do arquivo e parta-o aí.
depois, via psql
importa a estrutura da criação das tabelas
importe os dados
importa a estrutura da criação dos indices
faça uma bat para abrir o psql no windows.
Se não conseguires me envia os arquivos de estrutura e dados que
farei um teste aqui.
Rudinei Dias
Luiz Carlos wrote:
> Pessoal, ainda nao consegui resolver meu problema
>
> 1 - Alguem quer receber as pastas zipadas pra ver se consegue carregar
> as bases de dados.
>
> 2 - Alguem sabe de um software que importe as bases de dados do postgre
> para outro banco de dados.
>
> 3 - O que me interressa realmente e a estrutura das tabelas do banco
> de dados.
>
> Obrigado
> Luiz.
>
> ------------------------------------------------------------------------
> Você quer respostas para suas perguntas? Ou você sabe muito e quer
> compartilhar seu conhecimento? Experimente o Yahoo! Respostas
> <http://us.rd.yahoo.com/mail/br/tagline/answers/*http://br.answers.yahoo.com/>!
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> Antes de perguntar consulte o manual
> http://pgdocptbr.sourceforge.net/
>
> Para editar suas opções ou sair da lista acesse a página da lista em:
> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
------------------------------
Message: 7
Date: Tue, 12 Sep 2006 14:56:31 -0300
From: Daniel Loureiro <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] Eventos Notify e Listen
To: Grupo de Usuários do PostgreSQL no Brasil
<[email protected]>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"
Há um tempo atrás nós tivemos um dilema parecido. No caso, usamos uma
solução baseada em notificações do Postgresql. E mais tarde migramos
para uma solução baseada em sockets.
A solução baseada em notificações funcionou bem durante alguns anos
(mesmo com uma intensiva quantidade de inserções). Porém mudamos devido
a uma série de desvantagens:
1. Você precisa ter uma conexão permanente com o banco, só para
monitorar as notificações.
No nosso caso, tínhamos cerca de 60 clientes. Isto significava que o
banco estava sempre com pelo menos 60 conexões. Agora some isto às
conexões utilizadas pelos comandos SQL, e você facilmente chega a uma
média de mais de 100 conexões. Se você for usar com mais clientes
então... imagine os recursos consumidos. Principalmente consumo de
memória do servidor, que poderia ser usada de verdade, por consultas por
exemplo.
2. Falhas de recebimento de notificações. Eventualmente estas conexões
podem ser mortas pelo postgres: falta de atividade, falta de recursos,
etc... Isto significa que você terá que ficar testando o status da conexão.
3. Impossibilidade de realizar tarefas de manutenção como "Vacuum",
"alter table", etc. Comandos de manutenção de uma tabela (como criar um
novo campo) sempre esperam que todas as conexões que realizam alguma
atividade nesta tabela acabem. Isto é, se você sempre tiver conexões
monitorando a tabela "X", você precisará derrubar estas conexões antes
de fazer um "vacuum" ou um "alter table". Caso contrário, o comando
causará deadlocks (nem seu comando, nem os dos clientes irão funcionar).
4. Criação de um processo em segundo plano. Você terá que criar um
processo, apenas para controlar a atividade das notificações (mas você
também terá que fazer isto se usar sockets).
5. Dependência do banco. Isto não chega a ser um grande problema, mas
suponha que seus clientes queiram usar o Oracle. Neste caso você terá
que mudar os fontes, o que não seria necessário se você usasse sockets.
-----
Entre as vantagens eu destacaria:
1. Quem gravar na tabela não precisa enviar pacotes via rede para seus
clientes. Isto significa que você pode monitorar atividades de outros
sistemas. Por exemplo: você pode querer receber uma notificação de
lançamento de uma baixa no Microsiga (um ERP que usa o postgresql).
-----
Bem, nós botamos na balança aquilo que era desvantagem e o que era
vantajoso (de acordo com a nossa forma de trabalhar). No fim, acabamos
decidindo que o cliente que escrevia na tabela deveria avisar o cliente
que monitorava esta tabela (via TCP/IP).
Você também deverá ver quais suas necessidades e o que é mais
prioritário para você.
Sds,
Daniel Loureiro.
Cristiano Panvel escreveu:
> Beleza,
>
> Meu cenário é mais ou menos o seguinte:
>
> Estou programando em Qt com C++, e a aplicação será um atendimento de
> chamadas crítico, então por exemplo um usúario X inseriu uma chamada,
> no banco de dados imediatamente ela deve aparecer, para os outros 50
> atendentes.
>
> Mais todos poderam inserir e encerrar a chamada, entendeu.
>
> Eu poderia usar sockets para isso ou RPC mais sou novo em Qt não
> gostaria de me arriscar tanto.
>
> E não gostaria de ter que ficar tando refresh na tela a cada segundo
> isso fica muito feio, somente quando for necessário.
>
> Qual é a sugestão para o cenário.
>
> Cris
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome : smime.p7s
Tipo : application/x-pkcs7-signature
Tam : 3253 bytes
Descr.: S/MIME Cryptographic Signature
Url :
http://pgfoundry.org/pipermail/brasil-usuarios/attachments/20060912/2dc34d9d/attachment.bin
------------------------------
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
Fim da Digest Brasil-Usuarios, volume 289, assunto 2
****************************************************
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios