DBlink conexion BBDD - Tensho97/Aprende-a-Aprender GitHub Wiki
Un dblink es una conexión que se establece entre dos bases de datos. El objetivo de esta conexión es la obtención de datos o consultas sobre una base ajena a la que estamos conectados.
Desde cualquier BD se pueden recuperar datos de cualquier otra base de datos (Naturalmente, es necesario identificarse con perfil de un usuario con acceso a los mismos). En el caso de PostgreSQL, DBLink son funciones preparadas por los autores de postgres que añaden la funcionalidad de acceso a datos de forma remota.
No se trata de conectarse remotamente con un servidor de bases de datos, sino acceder desde una base da datos a elementos de otra base de datos a través de una linea de comunicaciones, combinando ambas.
Instalar funciones DBlink en tu base de datos local:
- Solo es necesario realizar esto UNA vez.
- Se ejecuta el SQL que creará las funciones de dblink. El script está en:
- C:\Program Files\PostgreSQL(version)\share\contrib\dblink.sql o bien ..\share\extension\dblink.sql
- Una vez ejecutado el script, la base de datos esta preparada para conectarse a otras.
Ejemplos de comandos:
Select:
SELECT lista_de_campos
FROM dblink('dbname=baseDatos port=puerto host=ordenadorRemoto user=usuario password=contraseña','SQL') AS Alias(campo1 tipo1,campo2 tipo2,…)
WHERE condiciones
ORDER BY criterios_de_ordenacion;
Insert/update/delete:
Ser realiza con la funcion dblink_exec , que tiene el formato siguiente dblink_exec('conexion','sentenciaSQL').
select dblink_exec('dbname=remota port=5432 host=yoquese.com user=postgres password=contrasena',
'INSERT INTO gente (codigo,nombre,sueldo) VALUES (33,''Pepito'',1234.45));
A la hora de introducir varchar se deben poner dos ' seguidas para que funcione
Mezcla de datos remotos y locales:
Por supuesto se pueden realizar consultas mixtas que impliquen la base de datos local y la remota. Para ello se realizaran vario pasos:
- Se realiza la conexion con la Base de Datos:
SELECT dblink_connect('dbname=empleado port=5432 host=192.168.32.44 user=postgres password=root');
- Sentencia SQL:
SELECT r.nombre,a.texto
FROM dblink('SELECT nuempl,nombre FROM templa') AS r(nuempl varchar,nombre varchar),
tabla_local AS a
WHERE r.nuempl=a.codigo;
La tabla r, se corresponde con la tabla temporal creada por bdlink para guardar los datos externos. Mientras que la tabla a es la tabla local.
- Se cierra la conexion:
SELECT dblink_disconnect();
Autor: Miguel