# 1

# Vincular conexiones (ej. conexiones virtuales)

La vinculación de conexiones es una característica que permite «vincular» varias conexiones y/o conjuntos de datos importados en una única conexión, que se puede usar casi como una conexión regular.

Esta característica es útil cuando se necesita ejecutar un comando SQL (por ejemplo, para extraer datos) tomando datos de cuentas almacenados actualmente en diferentes bases de datos. Sin esta característica, la manera de obtener el mismo resultado es exportar los datos necesarios desde cada base de datos y trabajar sobre ellos fuera de las bases de datos.

Para crear una nueva conexión «ligada» (o conexión «virtual»), use el menú Conexión Vincular conexión, o el atajo Ctrl i. Esto abre una nueva ventana de diálogo desde la que se pueden definir los elementos que se incluirán en la conexión «ligada», como se muestra a continuación.

# Diálogo para crear una conexión virtual nueva

Aquí se ligará la conexión actual (c1) con el esquema «c1»

Use el botón Añadir vinculación o:

vincular una conexión para incluir todas las tablas de esa conexión: use la opción Vincular una conexión. Esta opción simplemente añade un elemento nuevo en el diálogo, para especificar un nombre de esquema y seleccionar una conexión existente.

vincular un conjunto de datos para importar datos desde un archivo de texto como una única tabla: use la opción Vincular un conjunto de datos. Consulte la siguiente sección para obtener más información.

# Caso de uso para conexiones virtuales

Para ilustrar el uso de una conexión virtual, se definirá un caso de uso sencillo y se verá qué útil es. Se supone que tiene una base de datos que contiene la lista de servidores de la que es responsable. Para simplificar, se asumirá que la base de datos contiene una tabla «servidores» con la siguiente definición:

CREATE TABLE servidores (cadena de nombre, cadena de ubicación);

Se supone que tiene una tabla que contiene la siguiente información:

> select * from servidores ; nombre | ubicacion ---------+--------- moon | sala1 darkstar | sala2 flag | sala3 alf | sala2 vador | sala3 (5 rows) >

Ahora se asume que tiene un programa de terceras partes que le da una lista de servidores que pueden tener un problema. La salida de este programa es un archivo CSV con una columna para el nombre del servidor, una columna para el código de error y una columna que describe el problema. Se asume que el archivo CSV contiene lo siguiente:

$ cat problemas.csv Nombre servidor,Codigo error,Descripcion error darkstar,0,sistema de archivos lleno vador,1,firma AV caducada darkstar,2,sobrecargado flag,0,sistema de archivos lleno $

Ahora se supone que quiere conocer todos los servidores, dónde están ubicados y dónde hay un problema con código de error «0». La solución es vincular la conexión a la base de datos (por ejemplo, en el esquema «c1»), importar el archivo CSV de problemas (por ejemplo, en la tabla «tab») y ejecutar el siguiente comando SQL:

SELECT "nombre servidor", ubicacion FROM tab INNER JOIN c1.servidores AS s ON (tab."nombre servidor" = s.nombre) WHERE "Codigo error"=0

Lo que devuelve los resultados esperados, como se muestra en la siguiente figura:

## Resultados esperados desde una conexión virtual

# Importar un conjunto de datos en una conexión virtual

Para importar un conjunto de datos en una tabla en la conexión virtual (por ejemplo, para importar el archivo «problemas.csv» desde el caso de uso), use la opción Vincular un conjunto de datos desde el diálogo de creación de una conexión virtual.

## Importar un conjunto de datos en una conexión virtual - 1

Desde ahí use el botón Importar, que le permite seleccionar un archivo que importar y también definir algunas opciones de importación (codificación del archivo, tipo de archivo, ...). Después de este paso, la conexión virtual ya está lista para usarse:

## Importar un conjunto de datos en una conexión virtual - 2

La conexión virtual resultante, identificada aquí como «c2», está abierta es su propia ventana nueva:

## Nueva conexión virtual abierta

# SQL useable with virtual connections

You can use the SQL understood by SQLite in any virtual connection. Be aware however that if you define database objects (outside of the extended SQL presented next section), they will be lost the next time the virtual connection is opened.

See the SQL understood by LDAP connections and virtual connections section for more information.