Sembrava quasi impossibile invece ci sono riuscito, e non è stato neanche difficile, stiamo parlando della migrazione dei dati da un database Microsoft Access (.mdb) a mySql (.sql) (migrazione necessaria se si vuole convertire un sito asp o asp.net in PHP).

Soluzione per Linux

Il software che ho provato gira su ubuntu e si chiama MDB-Tools.

Potete installarlo in pochi instanti sulla vostra distro ubuntu tramite il comando

sudo apt-get install mdbtools

Una volta installato potete, a linea di comando, estrarre sia lo schema del DB che le varie tabelle.

Visualizziamo la lista delle tabelle del DB:

mdb-tables NOMEDB.mdb

output:

table1 table2

Possiamo anche visualizzare la struttura di tutte le tabelle:

mdb-schema NOMEDB.mdb

output:

————————————————————-
— MDB Tools – A library for reading MS Access database files
— Copyright (C) 2000-2004 Brian Bruns
— Files in libmdb are licensed under LGPL and the utilities under
— the GPL, see COPYING.LIB and COPYING files respectively.
— Check out http://mdbtools.sourceforge.net
————————————————————-

DROP TABLE table1;
CREATE TABLE table1
(
ID Long Integer,
nick Text (100),
anno Integer,
data Integer,
);
— CREATE ANY INDEXES …

DROP TABLE table2;
CREATE TABLE table2
(
ID Long Integer,
settore Long Integer,
descrizione Text (120),
scheda Long Integer,
progetto Text (20),
);
— CREATE ANY INDEXES …

Una volta reperita la lista delle tabelle possiamo estrarre tutti i dati di ogni singola tabella

mdb-export -I NOMEDB.mdb table1 | sed -e ‘s/)$/)\;/’

output:

INSERT INTO table1 (ID, nick, anno, data) VALUES (1,”pippo”,1987,20110207);
INSERT INTO table1 (ID, nick, anno, data) VALUES (2,”pluto”,1977,20110207);
INSERT INTO table1 (ID, nick, anno, data) VALUES (3,”paperino”,1980,20110207);

Possiamo quindi redirigere l’output su un file con estensione .sql e andare quindi in phpMyAdmin a lanciare le INSERT cosi’ da popolare il nuovo DB in mysql.

Soluzione per Windows

Scaricare il programma da http://www.bullzip.com/download.php
e seguire questi passi dopo l’installazione per la migrazione da access a mysql: