alguém sabe como faço pra estando em uma base acessar os dados de outra base do postgre num select por exemplo?
Postgree
4 Respostas
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
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
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.
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