Postgree

4 respostas
Aurelio_da_Silva_Gra

alguém sabe como faço pra estando em uma base acessar os dados de outra base do postgre num select por exemplo?

4 Respostas

Luca

Olá

Abrindo outra conexão e fazendo o select na outra base. Os resultados das 2 bases você precisa fazer o join na mão.

[]s
Luca

Aurelio_da_Silva_Gra

tem como fazer um select do tipo:

select base1.tab1.campo1, base2.tab2.campo2
from base1.tab1, base2.tab2
where base1.tab1.cod1 = base2.tab2.cod2

T

O que o Luca falou está documentado aqui.

http://www.postgresql.org/files/documentation/faqs/FAQ.html#4.18

4.18) How do I perform queries using multiple databases?

There is no way to query a database other than the current one. Because PostgreSQL loads database-specific system catalogs, it is uncertain how a cross-database query should even behave.

contrib/dblink allows cross-database queries using function calls. Of course, a client can also make simultaneous connections to different databases and merge the results on the client side.

Luca

Olá

Isto foi uma pergunta?

Presumo que sim e neste caso não creio que isto seja possível diretamente. Mas você pode usar a função dblink() para acessar outras bases. Um exemplo de select que achei googlando postgresql dblink:
select *
from dblink
        (
                'dbname=pgteste
                 hostaddr=192.168.1.1
                 user=postgres
                 password=postgresv
                 port=5432',

                'select nome
                 from clientes
                '

        ) as t1(nome varchar(30));

É necessario que o pacote Contribs do postgres esteja instalado e voce devera carregar o script no psql da seguinte maneira:
\i /usr/share/pgsql/contrib/dblink.sql
Apos ter usado o dblink é necessario que seja fechado com a seguinte dblink_disconnect().

Outra alternativa mais javaneira seria obter os selects de cada base e armazenar em arraylists. Os arraylists podem ser gravados em tabelas temporárias em uma das bases. Depois nesta base vc pode usar qq comando SQL comum.

[]s
Luca

Criado 2 de fevereiro de 2005
Ultima resposta 2 de fev. de 2005
Respostas 4
Participantes 3