jueves, 4 de noviembre de 2010

Convertir una base de datos en access a mysql de forma periódica (II)

Continuamos con la configuración del ordenador que hará de servidor FTP y MySql.

Si todo ha ido bien, el ordenador de la biblioteca subirá cada día una copia del fichero abies.mdb al directorio /home/biblioteca del servidor. Ahora vamos a convertir los datos de /home/biblioteca/abies.mdb a MySql.

Se supone que ya existe una base de datos creada para tal fin, a la que llamaremos biblioteca. Si dicha base de datos aún no ha sido creada, lo haremos con el siguiente comando:
echo "CREATE DATABASE biblioteca DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish2_ci ;" | mysql -u root --password=password_root
Siendo "password_root" la contraseña del usuario root de MySql. Una vez creada la base de datos, conviene trabajar con un usuario en MySql que sólo tenga privilegios sobre la citada base de datos. Para crear este usuario haremos lo siguiente (usuario: biblioteca, contraseña: password_biblio):
echo "CREATE USER biblioteca@localhost IDENTIFIED BY 'password_biblio';" | mysql -u root --password=password_root

echo "GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , EVENT, TRIGGER, SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON biblioteca.* TO biblioteca@localhost;" | mysql -u root --password=password_root

Vamos ahora a incorporar los datos desde access. Lo primero es instalar las mdbtools:
sudo apt-get install mdbtools

A continuación, crearemos un script al que llamaremos, por ejemplo, bibliotomysql.sh. Aquí dejo el script completo. Este script se encarga de transformar las tablas de Access a un formato válido para MySql e importarlos. Aún tiene ciertos problemas con la codificación de la tabla "Lectores". Estamos en ello.

Este script lo dejaremos en /home/biblioteca/ y le daremos permisos de ejecución:
chhmod +x /home/biblioteca/bibliotomysql.sh
y lo programaremos con cron:
sudo crontab -u biblioteca -e
Entramos en el editor que más nos guste e incorporamos la línea:
00 13 * * * /home/biblioteca/bibliotomysql.sh
Con lo que se ejecuará este script todos los días a las 13:00 horas.


P.D.: Información recopilada gracias a:
http://farismadi.wordpress.com/2008/07/13/encoding-of-mdb-tool/
http://nialldonegan.me/2007/03/10/converting-microsoft-access-mdb-into-csv-or-mysql-in-linux/ 

ACTUALIZACIÓN: para que mysql trabaje en UTF-8: 
http://recursive-design.com/blog/2008/06/23/force-mysql-encoding-to-utf8/
Que viene a decir que hay que añadir al fichero my.cnf las siguientes líneas:
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
 

No hay comentarios:

Publicar un comentario