Combina Access y MySQL

Tu aplicación Access es perfecta… O lo era, hasta que la base de datos creció demasiado. Migra los datos a MySQL manteniendo toda tu aplicación en Access, es gratuito y mucho más sencillo de lo que imaginas

Javier Alonso

Combina Access y MySQL

18 noviembre 2009

MySQL es una base de datos gratuita que te permitirá manejar sin problemas cientos de megas de información, pero que carece de las facilidades de Access a la hora de crear tablas y consultas o programar formularios de acceso a los datos.

Esta última, por su parte, presenta importantes problemas de rendimiento cuando el tamaño de las bases de datos supera los 20 o 30 megas, e incluso antes, dependiendo del poco o mucho cuidado que hayamos puesto en la manipulación de los datos. El mejor de los mundos sería, por tanto, almacenar los datos en MySQL y acceder a ellos desde Access, que es exactamente lo que vamos a hacer en este artículo.

Si nos mantenemos dentro del mundo de Microsoft, la alternativa sería migrar la base de datos a SQLServer 2008 Express (www.microsoft.com/sqlserver), que es gratuita mientras la base de datos no supere los 4,5 Gbytes. Las aplicaciones pueden desarrollarse en Microsoft Visual Studio 2008 y la migración es muy sencilla con el asistente que incorpora el propio Access. Si estamos hablando de un proyecto nuevo y nuestra experiencia es un entorno Windows, la solución más adecuada será sin duda SQLServer.

Si lo que se trata es de «remozar» un proyecto antiguo en Access, la alternativa de MySQL se vuelve muy atractiva. La migración es un poco más laboriosa, pero, a cambio, no tendremos límite de capacidad… Y probaremos algo distinto.

El proceso es sencillo: instalaremos My­SQL en nuestro sistema Windows, migraremos la estructura y datos de nuestra base de datos al nuevo entorno y, luego, la enlazaremos con nuestra base de datos actual en Access para que las aplicaciones que hemos desarrollado sigan funcionando sin cambios.

PASO 1. INSTALA MYSQL, EL DRIVER ODBC Y LA HERRAMIENTA DE MIGRACIÓN

Accedemos a la página principal de My­SQL en www.mysql.com o al DVD que acompaña a la versión más completa de PC Actual 221 para descargarnos el software. La versión más reciente de la base de datos que nos ofrece es la 5.1.35, de la que descargaremos el archivo correspondiente al enlace Windows Essentials (x86) si nuestro sistema operativo Windows es de 32 bits. Si es de 64 bits, elegiremos la opción del epígrafe Windows x64 downloads. Para nuestro ejemplo, usaremos la versión de 32 bits.

03

Una vez descargado el archivo, lo ejecutamos y seguimos los pasos del instalador. Elegimos la instalación típica y marcamos la casilla de configurar MySQL. En el asistente de configuración, tenemos que tener cuidado de elegir las siguientes opciones: Standard Configuration (si nuestro PC no tiene una instalación previa de MySQL, este asistente es mucho más sencillo y práctico que el detallado), Include Bin Directory in Windows PATH (nos permitirá acceder a MySQL desde la línea de comandos, sea cual sea la carpeta con la que estemos trabajando) y Modify Security Settings (password con el que accederemos a MySQL).

04

Con esto ya tenemos instalado MySQL. A continuación, emplazaremos el driver ODBC, que nos permitirá acceder a los datos desde nuestra aplicación Access. Éste se descarga desde la misma página de MySQL, accediendo a las opciones Download/Connectors/Connectors ODBC/5.1/Windows.

La instalación, escogiendo la opción Típica, no tiene ninguna particularidad reseñable. Por último, descargaremos e instalaremos la herramienta de migración BullZip – Access to MySQL desde www.bullzip.com. Este proceso tampoco conlleva ninguna dificultad.

PASO 2. EJECUTA LA HERRAMIENTA DE MIGRACIÓN

Bullzip dispone de un asistente que facilita la migración. La arrancamos y nos pedirá, en primer lugar, el archivo Access con nuestra base de datos y, en caso de que estuviera protegido por contraseña, el usuario y password.

En el siguiente paso, indicamos el usuario y contraseña de nuestra base de datos MySQL. Utilizaremos el usuario root y la clave que hayamos indicado durante la instalación. Elegimos la opción Direct transfer para traspasar la información directamente a la base de datos.

La alternativa Create dump file nos permite generar un fichero de texto con las instrucciones SQL necesarias para generar la base de datos, que, luego, tendríamos que procesar en MySQL. Tiene la ventaja de que el archivo queda como copia de seguridad, pero, en nuestro caso, aparte de ser más lento, puede presentar problemas con caracteres especiales como la ñ o las comillas simples. También debemos dar un nombre a nuestra base de datos en MySQL y el tipo de tabla, que será siempre InnoDB.

0009

A continuación, nos pide que elijamos las tablas que queremos migrar, que, en principio, serían todas. En el paso siguiente, nos pregunta qué elementos deseamos transferir: estructura y datos, solo datos, etc. Para una migración completa, dejaremos marcadas todas las opciones. Hacemos clic sobre el botón Run Now y se ejecutará la migración.

Podemos tener problemas si en el diseño de nuestra base de datos no hemos sido cuidadosos con los índices, por ejemplo, Access nos permite mezclar en una misma clave principal de tabla campos autonuméricos y de otro tipo, mientras que MySQL exige que los campos autonuméricos sean únicos en cada índice.

0011

Estos problemas ocurren porque los productos Microsoft, en general, no son nada exigentes con la sintaxis o la ortodoxia en la programación. Lo hagamos como lo hagamos, casi todo funciona en Access. Si tenemos problemas con los índices, podemos elegir no migrarlos.

Los índices no son la única posible fuente de error, aunque sí la más común. Los mensajes de error de la migración son bastante autoexplicativos y deberíamos poder corregirlos con facilidad.

PASO 3. ENLAZA LAS NUEVAS TABLAS DESDE TU APLICACIÓN ACCESS

Abrimos nuestra base de datos Access por la pestaña Tablas y elegimos la opción de menú Insertar/Tabla/Vincular tabla y, en el desplegable que nos muestra en la parte inferior de la ventana, optamos como tipo de archivo por Base de datos ODBC, ya que éste es el driver que instalamos en el Paso 1 para acceder a MySQL.

En la ventana que se abre, escogemos la pestaña Origen de datos de equipo, que nos muestra todos los orígenes de datos ODBC que tenemos configurados en nuestro equipo. Como nuestra base de datos está recién creada, tenemos que añadirla a la lista mediante el botón Nuevo.

En la ventana que aparece, elegimos el tipo de datos Origen de datos de sistema, a fin de que la base de datos esté accesible con cualquier usuario que entremos en el PC y, seguidamente, escogeremos el driver MySQL ODBC 5.1 Driver.

0014

Este solicitará los parámetros de conexión a nuestra base de datos. Los primeros campos son el nombre con el que identificaremos al nuevo origen de datos en nuestro equipo y los demás son específicos de MySQL: el servidor, que será siempre localhost, el usuario root y nuestro password.

Elegiremos también la base de datos que acabamos de migrar. Esto nos lleva de vuelta a la lista de orígenes de datos, donde ahora ya sí podemos elegir nuestra base de datos. Nos mostrará la lista de tablas que componen nuestra base de datos, las marcamos todas y se incorporarán a nuestra base de datos como tablas nuevas con el icono de un mundo, que indica que están fuera de nuestro Access.

0015

Lo único que queda por hacer es borrar las tablas originales y renombrar las vinculadas con los nombres de las primeras. Para hacerlo, puede ser necesario borrar las relaciones que existan entre las tablas originales. Estas no pueden establecerse entre tablas vinculadas, por lo que, si nuestra aplicación las necesita, tendremos que establecerlas en MySQL, como se explica en el paso siguiente.

0016

Una vez tengamos solo las tablas vinculadas, es conveniente que accedamos a la opción Herramientas/Utilidades de la base de datos/Compactar y reparar bases de datos, a fin de asegurarnos de que hemos liberado el espacio de disco y nuestro Access ha reducido su tamaño.

PASO 4. RECONSTRUYE LAS RELACIONES ENTRE TABLAS EN MYSQL

Este paso puede no ser necesario, depende de cómo hayamos programado nuestra aplicación Access. Para construir una relación entre tablas en MySQL, entramos en la consola de comandos de MySQL (ver apartados) y escribimos una instrucción parecida a la siguiente:

ALTER TABLE `tabla1` ADD CONSTRA INT `nombrerelacion` FOREIGN KEY (`campoclave1`, `campoclave2`) REFE RENCES `tablamaestra`(`campoclavemaestra1`, `campoclavemaestra2`) ON DE LETE CASCADE ON UPDATE CASCADE;

Esta instrucción enlaza la tabla1, obligando a que los campos campoclave1 y campoclave2 coincidan con los campos campoclavemaestra1 y campoclavemaestra2 de la tabla tablamaestra. Si se modifica o borra un registro de tablamaestra se producirá lo mismo en tabla1. O sea, se establece una relación 1:n entre tablamaestra y tabla1.

Añadiremos todas las relaciones que queramos dando un nombre diferente a cada una. Para que MySQL empiece a aplicar estas reglas, escribiremos la instrucción

SET FOREIGN_KEY_CHECKS=0;

Y esto es todo. Desde este momento, nuestra aplicación Access debería funcionar mejor que antes, más rápido y sin problemas.

LA CONSOLA DE COMANDOS DE LA HERRAMIENTA DE SUN

Hay algunas herramientas que facilitan el uso de MySQL pero, en general, la utilizaremos desde la línea de comandos. Accedemos a Inicio/Ejecutar y tecleamos cmd, lo que abre una ventana de comandos MS-DOS. Tecleamos el comando

Mysql –u root –p

Root es el nombre del usuario administrador. Nos pide la clave que escogimos durante la instalación y vemos cómo el prompt cambia para indicarnos que estamos ya en MySQL.

Las instrucciones se pueden escribir en varias líneas y terminan (salvo pocas excepciones) en punto y coma. Lo primero que tenemos que hacer es ejecutar la instrucción:

USE nombrebasededatos;

De esa forma, todas las operaciones que se ejecuten a continuación lo harán sobre las tablas de esa base de datos. Podemos ejecutar cualquier sentencia SQL. Para ver las tablas de nuestra base de datos ejecutaríamos:

SHOW TABLES;

Para crear elementos se usa:

CREATE [DATABASE | TABLE | …] nombrelemento;

Y, para borrar cualquier cosa, la instrucción es la misma sustituyendo CREATE por DROP. Para salir de la consola de MySQL, se usa la instrucción EXIT.

Cuando creamos relaciones entre tablas o realizamos otras operaciones complejas, es muy conveniente escribir las instrucciones en un fichero de texto (que suele nombrarse con la extensión SQL, pero no es obligatorio) y, luego, lo cargamos desde la consola de comandos de MySQL. Se utiliza la instrucción:

SOURCE nombrefichero;

En la web de MySQL, se encuentra un completo tutorial sobre las instrucciones de la base de datos.

INTERFAZ MYSQL MÁS AMIGABLE

La consola de comandos es muy potente, pero poco amigable. Existe una aplicación gratuita que nos permite tener un interfaz mucho más agradable para manejar My­SQL, sin llegar a la sofisticación de los asistentes de Access. Se trata de DBTools Manager Standard. Se puede descargar de www.dbtools.com.br y ofrece un periodo de prueba de 20 días, terminado el cual proporciona la misma funcionalidad pero solo para un tipo de base de datos, en nuestro caso MySQL.

La parte izquierda de la aplicación permite navegar por la estructura de base de datos de forma similar a como hacemos en Access: tablas, vistas (equivalente a consultas), etc. Establecer las relaciones entre tablas desde DBTools, por ejemplo, desde la pestaña Foreign Keys es bastante más sencillo que desde la línea de comandos.

Temas Relacionados
Loading...