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()/

Comentários

  1. Certa vez, precisei de integração em nível de BD entre o PostgreSQL e outros SGDBs. Como estava em ambiente Windows Server, criei uma variante do dblink usando drivers ODBC. O resultado foi o DBLink-ODBC: http://sourceforge.net/projects/dblink-odbc/
    Não estou mais mantendo ativamente o projeto, mas, quem sabe, serve para alguém...

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Python acessando Oracle® XE no Ubuntu

Mega-Tutorial Flask | The Flask Mega-Tutorial (pt-BR)

Filtrando conteúdo pelo MIME-TYPE com o Squid