quinta-feira, 23 de abril de 2009

Vários databases na mesma query

Se você precisa acessar duas ou mais bases de dados PostgreSQL numa mesma query você pode utilizar o contrib dblink[1].

Para quem utiliza Ubuntu, basta executar:
$ sudo apt-get install postgresql-contrib
Em seguida, instalá-lo no database que necessitará acessar dados de outras bases de dados.
$ psql -d nome_database -U nome_usuario -f /usr/share/postgresql/8.2/contrib/dblink.sql
Onde nome_database e nome_usuario são o nome da base de dados e o nome do usuário com privilégios sobre esta base de dados, respectivamente.

Pronto! Você agora já pode executar comandos do tipo:
SELECT *
FROM dblink('dbname=mydb', 'select proname, prosrc from pg_proc')
AS t1(proname name, prosrc text)
WHERE proname LIKE 'bytea%';
Requisitos
  • Ubuntu 8.04
  • PostgreSQL 8.2
Referências
  • [1] http://www.postgresql.org/docs/current/static/contrib-dblink.html
  • [2] http://www.vivaolinux.com.br/dica/Acessando-dois-databases-no-mesmo-SELECT-(PostgreSQL)/
  • [3] http://www.vivaolinux.com.br/dica/Funcao-dblink()/