Vincular PostgreSql y Mysql en Access usando ODBC

Consideraremos la siguiente situación: Un cliente nos pide migrar la base de datos “X” de su sistema a una “Y”. ¿Te resulta conocida?, bueno entonces puede ser que este artículo te sea de mucha ayuda, o en su caso, de no serte conocida te será de ayuda a futuro. Sí, por que esto tarde o temprano lo enfrentamos todos de una u otra manera.

En su mayoría, los diferentes motores de bases de datos nos complican la transferencia de datos entre ellos de tal forma que ejecutar una consulta desde el motor de base de datos X al motor de base de datos Y puede ser un verdadero dolor de cabeza y esto se complica aún  más si “Y” es un motor de base de datos diferente al fabricante de “X”. Claro, como dije “En su mayoría” no lo hacen sencillo. De los pocos motores de bases de datos que lo permiten: (Ms Sql server, PostgreSql, Access) he elegido para este artículo Access.

En este artículo aprenderemos a vincular un motor de base de datos Mysql y otro PostgreSql en Access para poder migrar información de una tabla en Mysql a PostgreSql. La tabla que migraremos será “Lista_Paises” que ya hemos usado previamente. Antes de iniciar quiero remarcar que cualquier motor de base de datos que proporcione un controlador ODBC puede vincularse  a Access.

Lo primero será instalar el driver ODBC y crear el DSN de Mysql “pruebas” tal y como lo hicimos al inicio del artículo: Ejecutar Stored procedures de Mysql con Delphi y ADO una vez instalado y configurado el ODBC de Mysql procederemos a instalar y configurar el driver ODBC de PostgreSql tal y como vimos en el artículo: Conectarse a PostgreSql con Delphi y ADO con la pequeña diferencia que esta vez nos conectaremos a la base de datos Pruebas.

 

Vista de las bases de datos “Pruebas” en Mysql y PostgreSql

 

 

Una vez instalados nuestros controladores ODBC y creados nuestros DSN vamos a ejecutar Access, en mi caso es 2010 pero esto aplica para cualquier versión de access superior a la 2000. En Access crearemos una base de datos en blanco con el nombre: “VincularPostgresMysql”

 

 

 

 

 

 

Una vez creada nuestra base de datos seleccionaremos el menú “Datos externos” y daremos click en la opción “Bases de datos odbc”

 

 

 

 

 

Se ejecutará entonces el asistente para orígenes ODBC y de las opciones que nos muestre elegiremos “Vincular al origen de datos creando una tabla vinculada”. Después daremos click en “Aceptar”

 

 

 

 

 

 

 

El asistente entonces nos mostrará una lista con los orígenes de datos existentes en nuestro equipo. Si seguiste el artículo Ejecutar Stored procedures de Mysql con Delphi y ADO entonces te aparecerá el dsn creado allí. Lo seleccionaremos y daremos click en aceptar.

 

 

 

 

 

Una vez que hemos vinculado nuestra tabla de mysql ejecutaremos una consulta para validar que efectivamente Access puede ejecutar una consulta a nuestro servidor Mysql y mostrarnos el resultado:

 

Hasta este punto hemos logrado comunicar nuestra base de datos Access con Mysql y con ello podemos ejecutar consultas que involucren cualquier otra tabla contenida o vinculada en access. Con esto en mente procederemos a vincular ahora la tabla lista_paises de nuestro servidor PostgreSql.

El procedimiento a seguir será casi el mismo que con  mysql. La única diferencia está en la seleción del DSN:

y después de seleccionado el dsn y presionado “aceptar” deberemos elegir la tabla a vincular:

 

Con esto hemos vinculado a nuestra base de datos Access las tablas “lista_paises” de Mysql y PostgreSql. Como había mencionado: debido a que Access nos permite ejecutar sentencias DML sobre cualquier tabla contenida o vinculada en él, procederemos a insertar el contenido de mysql en PostgreSql:

 

 

 

Después de ejecutar la sentencia iremos a pgAdmin a consultar la tabla lista_paises:

 

 

Como pueden ver, Access puede ser de mucha ayuda cuando se trata de migrar la información contenida en una tabla en un motor a otro distinto. Claro siempre y cuando ambos proporcionen un controlador ODBC.

*** Es importante mencionar que además de migrar, podríamos ejecutar una consulta que nos diga que registros existen en la tabla de Mysql que no existen en la tabla de PostgreSql….

 

 

Y bueno, espero que esta información sea de utilidad. Todo comentario será apreciado.

 

 

Sé el primero en comentar

Deja un comentario