DBLINK

Fazer download em txt, pdf ou txt
Fazer download em txt, pdf ou txt
Você está na página 1de 2

O primeiro passo � instalar o DBLink no banco.

Aqui vou considerar que a instala��o


do PostgreSQL foi realizada de forma compilada e para isso ser� necess�rio fazer
uso dos arquivos da instala��o. Dentro do diret�rio existe um diret�rio denominado
contrib e dentro deste diret�rio existe um subdiret�rio chamado dblink. Para
instalar o dblink � necess�rio realizar a compila��o e posteriormente adiciona-lo
ao banco desejado.

Para compilar � necess�rio executar o seguinte comando:

make

make install

Ap�s a execu��o dos comandos acima ser� gerado um arquivo chamado dblink.sql. Este
arquivo deve ser carregado (importado) no banco desejado. Para demonstrar o seu uso
trabalharei com os bancos: banco01 e banco02.

O banco banco01 possui um tabela chamada tabela01 e o banco02 possui uma tabela
chamada tabela02. Cada tabela possui um atributo c�digo do tipo inteiro e ambas as
tabelas cont�m 10 registros.

Carregando o arquivo dblink.sql no banco01.

psql banco01 -f dblink.sql

Com o dblink carregado no banco01, o pr�ximo passo � realizar a conex�o entre o


banco01 e o banco02.

No exemplo, ser� considerado que estando conectado no banco01 ser� requisitada uma
conex�o com o banco02 para ai sim possibilitar a troca de informa��es entre os dois
bancos de dados.

Ent�o vamos a pr�tica:

banco01=# SELECT dblink_connect(�conexao�,'host=localhost port=9999 user=postgres


dbname=banco02');
dblink_connect
�����-
OK
(1 row)

Alguns par�metros s�o informados. O primeiro � um nome para a conex�o, e o restante


par�metros normais de uma conex�o: hostname, porta, usu�rio, senha (opcional) e o
nome do banco. Como para este exemplo a autentica��o esta usando o m�todo trust, o
par�metro password foi omitido.

Com a conex�o OK agora � s� realizar uma opera��o qualquer.

Por exemplo, um join entre a tabela01 que pertence ao banco01 e a tabela02 que
pertence ao banco02.

banco01=# SELECT tab01.codigo,tab02.codigo FROM tabela01 tab01 INNER JOIN (SELECT *


FROM dblink(�conexao�,'SELECT codigo FROM tabela02') AS resultado(codigo integer))
tab02 ON tab01.codigo=tab02.codigo;

Um outro exemplo pode ser feito com uma opera��o de escrita (INSERT, UPDATE OU
DELETE).

A partir do banco01 fazendo uma chamada de inser��o na tabela02 que est� no


banco02.

banco01=# SELECT dblink_exec(�conexao�,'INSERT INTO tabela02 VALUES


(generate_series(11,20))�);
dblink_exec
����-
INSERT 0 10
(1 row)

Conferindo:

banco01=# SELECT * FROM dblink(�conexao�,'SELECT codigo FROM tabela02') AS


resultado(codigo integer);
codigo
���
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(20 rows)

Para opera��es de UPDATE e DELETE o procedimento transcorre da mesma maneira do que


do comando INSERT.

Por fim, para encerrar a conex�o � necess�rio executar a seguinte fun��o:

banco01=# SELECT dblink_disconnect(�conexao�);


dblink_disconnect
������-
OK
(1 row)

Você também pode gostar