Acessando dois databases no mesmo SELECT (PostgreSQL)
Às vezes precisamos no mesmo SELECT juntar informações que estão em vários bancos de dados diferentes, ou mesmo em servidores diferentes.
Para isso existe no Postgres um módulo contrib chamado DbLink, que permite fazer uma consulta em outro banco de dados e retornar como se fosse uma tabela comum.
Para usar o DbLink você precisa primeiro obter o pacote contrib do Postgres:
# apt-get install postgresql-contrib
Depois é preciso instalar o módulo no seu banco de dados:
$ psql -d meudb -U meuUser -f /usr/share/postgresql/contrib/dblink.sql
Uma vez feito isso, seu banco de dados já possui a função dbLink() e pode fazer consultas em outros bancos de dados, inclusive JOIN entre tabelas. A sintaxe para acessar outro banco é como o exemplo:
SELECT * FROM dblink('hostaddr=192.168.1.1 dbname=meuDb user=fulano password=minhasenha', 'select tablename from pg_tables') AS minha_tabela(tablename varchar);
Você especifica no primeiro parâmetro os atributos de conexão e no segundo o select a efetuar. É preciso também fornecer uma estrutura de retorno do select. O ideal nesses casos é criar uma view.
OBS: Os comandos foram testados em Debian Sarge e funcionam, em outras distros podem ser necessários ajustes.
HRA
Outras dicas deste autor
xmms-shell - uma maneira eficiente de controlar seu xmms
Codecs de vídeo para o Totem
Mudando de Gnome para KDE no VNC
Leitura recomendada
Fazendo backup com PostgreSQL
Mudando encoding do Postgres 8.4 para LATIN1
Select com extração de dia, mês ou ano no PostgreSQL
Instalação e configuração do PostgreSQL e phpPgAdmin no Debian
Lidando com nulos (NULL) em SQL
Comentários
Nenhum coment�rio foi encontrado.