Está en la página 1de 9

DBLINK

Ejecutor de Consultas de Forma Remota.
Descripción
Dblink ejecuta una consulta (por lo general un SELECT, pero puede ser cualquier sentencia
SQL que devuelve filas) en una base de datos remota.
Cuando se dan dos argumentos de texto, la primera de ellas se veía por primera vez como el
nombre de una conexión persistente; si lo encuentra, el comando se ejecuta en esa
conexión. Si no lo encuentra, el primer argumento es tratado como una cadena de
información de conexión como para dblink_connect, y la conexión indicada se hace sólo por
la duración de este comando.
Sinopsis
dblink (connname texto, texto SQL [, bool fail_on_error]) devuelve conjunto de registro
dblink (connstr texto, texto SQL [, bool fail_on_error]) devuelve conjunto de registro
dblink (texto SQL [, bool fail_on_error]) devuelve conjunto de registro
Argumentos
Connname – Nombre de la conexión para utilizar; omita este parámetro para utilizar la
conexión sin nombre.
Connstr – Una cadena de información de conexión, como se describe previamente para
dblink_connect.
Sql – La consulta SQL que se desea ejecutar en la base de datos remota, por ejemplo select
* from foo.
Fail_on_error – Si es verdad (el valor por defecto cuando se omite), entonces un error que se
produce en el lado remoto de la conexión se produce un error al ser lanzado también a nivel
local. Si es falso, el error se informa a distancia a nivel local como un aviso y la función
devuelve ninguna fila.
Valor de Retorno
La función devuelve la fila (s) producido por la consulta. Desde dblink se puede utilizar con
cualquier consulta, se declara a regresar registro, en lugar de especificar cualquier conjunto
de columnas. Esto significa que debe especificar el conjunto esperado de columnas en la
consulta de llamadas - de lo contrario PostgreSQL no sabría qué esperar. Aquí hay un
ejemplo:
SELECT * FROM dblink('dbname=mydb', 'select pro_name, pro_materia from profesor') AS
t1(pro_name character, pro_materia character) WHERE pro_name LIKE 'B%';

Se tendrá éxito siempre y cuando las cadenas de datos devueltos son de entrada válido para el tipo de columna declarada en la cláusula FROM. Desde la página principal de Pgadmin3 o desde consola se crean las bases de datos en las que se quiere hacer la consulta todas con sus respectivas tablas y datos guardados. pero especificando los tipos de columna es una extensión PostgreSQL.La parte de "alias" de la cláusula FROM debe especificar los nombres de columna y tipos que la función devolverá.) Esto permite al sistema para entender lo que * debe expandirse a. y dblink no insiste en el tipo de juegos compatibles tampoco. Los nombres de columna no tiene por qué coincidir. En tiempo de ejecución. antes de intentar ejecutar la función. y lo que Pro_name en la cláusula WHERE se refiere. (Especificación de nombres de columna en un alias es en realidad la sintaxis SQL estándar. un error se produce si el resultado de la consulta real de la base de datos remota no tiene el mismo número de columnas que se muestran en la cláusula FROM. sin embargo. .

Tablas de la Base de Datos Dblink1 Tabla de la Base de Datos Dblink2 .

.Para poder dar uso a cada una de las sentencias de la función dblink hay que crear en primera instancia una extensión desde el Sql Editor cualquiera de las bases de datos existentes para ser de punto de eje con el comando 'CREATE EXTENSION DBLINK' Con la creación de la extensión dblink se crean en un total de 41 funciones para poder hacer uso del Dblink y poder hacer las consultas de forma remota.

” y si el resultado de este es “OK” significa que la conexión a la base de datos Nombre_BD esta establecida y se puede ejecutar las consultas a disponer. .Para poder saber si las funciones de la extensión dblink creada funcionan correctamente hacemos uso de la sentencia Sql “Select dblink('dbname=Nombre_BD). Teniendo asi posible la ejecución de la consulta remota sabiendo cada uno de los campos de la tabla de la otra base de datos que se va a usar.

Datos de la Tabla municipio de la base de Datos dblink1 usada en la consulta remota. Datos de la Tabla usuario de la base de Datos dblink2 usada en la consulta remota. .

excepto que permitirá a los no superusuarios para conectarse utilizando cualquier método de autenticación. se abre una conexión sin nombre. Si se omite.1 port = 5432 dbname = mybd password = miclave user = postgres. pero sólo se permite una conexión sin nombre a la vez. La cadena de conexión también puede ser el nombre de un servidor extranjera existente. La conexión se mantendrá hasta que se cierre o hasta que la sesión de base de datos se terminó. El servidor y base de datos para ser contactados son identificados a través de una norma libpqcadena de conexión. DBLINK_CONNECT_U() Abre una conexión persistente con una base de datos remota. por ejemplo host = 127. Si el servidor remoto selecciona un método de autenticación que no implique una contraseña.DBLINK_CONNECT() Abre una conexión persistente con una base de datos remota Descripción dblink_connect () establece una conexión con un mando a distancia PostgreSQL base de datos. Vea el ejemplo siguiente. un nombre se puede asignar a la conexión. Sinopsis dblink_connect (texto connstr) devuelve el texto dblink_connect (texto connname. que siempre es OK (ya que cualquier error hace que la función de generar un error en lugar de regresar).0. Se recomienda utilizar el contenedor de datos-extranjera dblink_fdw la hora de definir el servidor extranjera. así como CREATE SERVER y CREATE USER MAPPING. a continuación. reemplazando cualquier conexión existente sin nombre. porque se parecen tener su origen en el usuario con el que los locales de la sesión de PostgreSQL se . suplantación y puede ocurrir subsiguiente escalada de privilegios.0. Valor de Retorno Devuelve el estado. Conexiones múltiples con nombre pueden ser abiertas a la vez. Connstr – libpq información al estilo de cadena de conexión. Opcionalmente. de forma insegura Descripción dblink_connect_u () es idéntica a dblink_connect () . connstr texto) devuelve el texto Argumentos connname – El nombre a utilizar para esta conexión.

Sinopsis dblink_connect_u (texto connstr) devuelve el texto dblink_connect_u (texto connname. incluso si el servidor remoto hace exigir una contraseña.pgpass fichero propiedad de usuario del servidor. pero la posibilidad de exponer una contraseña a un servidor remoto de poca confianza. es posible que la contraseña que se suministra desde el entorno de servidor. . En algunas situaciones puede ser conveniente conceder EXECUTE permiso para que dblink_connect_u () a usuarios específicos que se consideran fiables. Además. el primer argumento es tratado como una cadena de información de conexión como para dblink_connect .ejecuta el servidor. y la conexión indicada se hace sólo por la duración de este comando. pero esto debe hacerse con cuidado. dblink_connect_u () se instala inicialmente con todos los privilegios revocados desde PÚBLICO . Cuando dos de texto se dan argumentos. DBLINK_EXEC() Ejecuta un comando en una base de datos remota Descripción dblink_exec ejecuta un comando (es decir.pgpass fichero propiedad de usuario del servidor no contiene ningún registro especificando un nombre de host comodín. Por lo tanto. Sinopsis dblink_disconnect () devuelve el texto dblink_disconnect (texto connname) devuelve el texto Valor de Retorno Devuelve el estado. tales como ~ / . el primero que se veía por primera vez como el nombre de una conexión persistente. por lo que es exigible un-excepto por superusuarios. connstr texto) devuelve el texto DBLINK_DISCONNECT() Cierra una conexión persistente con una base de datos remota Descripción dblink_disconnect () cierra una conexión abierta previamente por dblink_connect () . cualquier sentencia SQL que no devuelve filas) en una base de datos remota. Si no lo encuentra. si lo encuentra. La forma sin argumentos cierra una conexión sin nombre. que siempre es OK (ya que cualquier error hace que la función de generar un error en lugar de regresar). el comando se ejecuta en esa conexión. También se recomienda que cualquier ~ / . Esto abre no sólo un riesgo de suplantación.

el error se informa a distancia a nivel local como AVISO. omita este parámetro para utilizar la conexión sin nombre. Connstr – Una cadena de información de conexión. texto SQL [. 'a'. Fail_on_error – Si es verdad (el valor por defecto cuando se omite). . Sql – El comando SQL que se desea ejecutar en la base de datos remota. bool fail_on_error]) devuelve el texto dblink_exec (sql texto [. bool fail_on_error]) devuelve el texto Argumentos Connname – Nombre de la conexión para utilizar. "c0"} "). "b0". bool fail_on_error]) devuelve el texto dblink_exec (connstr texto. insertar en los valores foo (0. texto SQL [. como se describe previamente para dblink_connect. Si es falso.Sinopsis dblink_exec (connname texto. ya sea cadena de estado de la orden o ERROR. por ejemplo. y el valor de retorno de la función se establece en ERROR. '{ "a0". entonces un error que se produce en el lado remoto de la conexión se produce un error al ser lanzado también a nivel local. Valor de Retorno Devuelve el estado.