2013
01.16

¡Guau! Ha pasado casi un año (¿sabático?) ya, desde mi última entrada. Realmente no me apetecía mucho escribir, ni me encontraba motivado. Pero tras haber ordenado un poco ciertos aspectos de mi vida, ¡vuelvo con más fuerza que nunca! 🙂

Una de las cosas con las que he tenido que lidiar últimamente es con las conexiones ODBC y el Mac (sí, tengo un Mac hace tiempo 😉 ). Y lo cierto es que he encontrado una forma sencilla de poner conexiones ODBC usando unixODBC tal y cómo se usa en Linux. Me ha sorprendido, porque funciona increíblemente bien:

Lo primero que hay que hacer es instalar el unixODBC para Mac OS X. Personalmente, la forma más simple que hay, creo que es usando Homebrew, esa fantástica herramienta de paquetes y software libre que creo que hace que Ruby sea un lenguaje que me ha llamado la atención (¡y lo digo como fanático pythonista! ;)). Es un ejemplo de trabajo bien hecho (no obstante, no hace falta que uses Homebrew, también están desde hace tiempo Fink y MacPorts).

Instala unixODBC con Homebrew:
brew install unixodbc

Una vez instalado, es hora de compilar el driver de ODBC para PostgreSQL (no está en disponible en HomeBrew, lamentablemente, así que lo haremos a mano):

  1. Descárgate el código fuente del driver ODBC. Elige uno que sea reciente y descomprímelo en un directorio de tu elección, abre una terminal y colócate dentro del directorio.
  2. Compílalo siguiendo la secuencia típica de comandos:

Si todo ha ido bien, deberías tener los drivers de ODBC para postgreSQL como 2 librerías, situadas en /usr/local/lib/psqlodbcw.la y /usr/local/lib/psqlodbcw.so

En principio ya está. Ahora hay que definir a mano el driver ODBC de postgreSQL en el archivo /usr/local/etc/odbcinst.ini que debe tener el siguiente contenido:

y grábalo.

Finalmente, crea un archivo .odbc.ini en tu directorio $HOME, con una entrada de un DSN, como la siguiente:

Esto define el DSN ib3db (con su usuario contraseña). Para probarlo sólo hay que teclear ahora:
isql -v ib3db
Y debería conectarse correctamente.

Conexión remota

El DSN anterior está pensado para conectarnos a una base de datos postgreSQL local. Si quisiéramos conectarnos a una remota, existen muchas maneras, pero la más simple y segura para mi es hacer un túnel SSH:
ssh -C -L 60000:localhost:5432 usuario@servidorremoto.com
Con esto se mapea el puerto local 60000 al 5432 remoto (y habrá que cambiar la linea Port = 5432 del archivo .odbc.ini anterior por Port = 60000, para que use este nuevo puerto). El comando se queda en ejecución. Para cortar el túnel en cualquier momento, no hay más que matarlo con CTRL-C.

Puedes usar otros parámetros extra, como -C (usado en este ejemplo, y recomendable para líneas lentas -e.g. modems- pero no para más rápidas) que comprime la transmisión de datos en el túnel, o -N (no ejecuta nada remotamente) que no abre ninguna sesión remota.

Share

Comentarios cerrados