USO DE DBLINK EN FUNCIONES DE POSTGRESQL(PARTE UNO)

PRIMERA PARTE.
Hola todos, les quiero mostrar como solucione un problema que tuve con los dblink en postgresql, busque mucho por internet pero no encontre mucha información, por eso quiero aportar algo para quienes esten en la misma situación.
Mi problema era que necesitaba obtener datos de otra base de datos y ademas relacionarlos con mi tabla, acontinuacion explico mejor.
En mi base de datos (dbmibase) tenía una tabla direcciones a la cual necesito agregarle datos de pais, provincia, canton y parroquia.

En la otra base de datos (dbexterior) se encontraban tablas de paises, provincias,cantones y parroquias relacionadas entre si, lo cual me parecia algo redundante crear esas tablas en mi base de datos.

Entonces busque la manera de acceder a esas tablas externas y me encontre con la funcion dblink de postgresql.

Basicamente dblink es una funcion que nos permite realizar una consulta sql a una base de datos externa.
Como primer paso hay que instalar la libreria que ya viene en postresql normalmente en un fichero dblink.sql
1- INSTALAR DBLINK.
Para intalar se debe escribir el siguiente comando

CREATE EXTENSION dblink

2- ABRIR CONEXION CON dblink_connect.
Para usarlo hay que abri una conexion con el siguiente comando.

SELECT dblink_connect('myconn', 'dbname=bdexterior,hostaddr=ip,user=usuario,password=clave');
con esto tendriamos una respuesta ok.
El primer parametro 'myconn' es el nombre que tendra la conexion y con el cual se podra 
acceder a la misma.
PARA MAS INFORMACION Dale click AQUI.
3- ENVIAR UNA CONSULATA CON dblink
SELECT c.idcanton,
c.nombre AS canton,
c.idprovincia
FROM dblink('myconn', 'SELECT idcanton,nombre,idprovincia FROM esquema.canton'::text) c(idcanton integer, nombre text, idprovincia integer);
Con esta consulta puedo acceder a totos los datos de la tabla canton. En la primera parte de la consulta en el SELECT se debe establecer los datos que van a retornar, cada campo tiene una c ese es un alias que se le ha asignado, en el FROM se hace referencia al dblink que acepta dos parametros, el primero la cadena de conexion que se abrió anteriormente, en la segunda va la consulta sql , por ultimo debemos hacer un alias con los datos que van a retornar.
PARA MAS INFORMACION Dale click AQUI.

Para realizar todo en una sola consulta  sin tener primero que abrir la conexion y luego ejecutar el query y adicionalmente podemos guardarlo en un vista.

CREATE VIEW esquema.view_canton AS
SELECT c.idcanton,
c.nombre AS canton,
c.idprovincia
FROM dblink('dbname=bdexterior,hostaddr=ip,user=usuario,password=clave', 'SELECT idcanton,nombre,idprovincia FROM esquema.canton'::text) c(idcanton integer, nombre text, idprovincia integer);

Por el momento es todo, espero que les sirva, aclaro que no soy un experto estoy aprendiendo y como tal quiero compartir algo de esa experiencia , si tienen alguna critica o sugerencia bienvenida sea. Hasta la proxima y no te olvides de comentar



Comentarios

Entradas más populares de este blog

PASAR UN ARRAY COMO PARAMETRO A UNA FUNCION DE POSTGRESQL (PARTE UNO)

Codeigniter solucion de :A PHP Error was encountered