Stressfreie Datenmigration von MS Access nach MySQL

Posted in Mysql, Windows, 28.12.2016 11:12

1. MS Access update und Entschlüsselung

In meinem Fall handelte es sich um eine sehr alte MS-Access-Version, so daß erstmal die Datenbank auf einen halbwegs aktuellen Stand (MS Access 2010) gebracht werden mußte. Im übrigen war die Datenbank verschlüsselt und das Paßwort nicht bekannt.

Bei letzterem Problem war das Alter der DB vermutlich sogar ein Vorteil ;-)

Der Paßwortschutz war bei MS Access 97 noch nicht so ausgereift, so daß gleich das erste recherchierte Tool (accesspv.exe) das Paßwort auslesen konnte....

Allerdings war es dann immer noch nicht möglich, die Datenbank zu entschlüsseln. DAzu mußte erst in das Format 2002-2003 konvertiert werden. 

Danach kann das das Paßwort entfernt werden, was gleichbedeutend mit der Entschlüsselung ist.

2. MySQL-Workbench Migration Assistent auf Windows 7 (nur für Schema-Migration zu gebrauchen)

Lt Doku sollte auf einer Windows-Maschine der direkte Import aus Access über die MySQL-Workbench und einen ODBC-Treiber möglich sein. 

In der Praxis läuft das bis zur Datenmigration durch, dann kommen die Fehlermeldungen, die zu debuggen sehr aufwendig sein kann.

Also ist dieses Vorgehen nur für die Schema-Migration zu gebrauchen und lohnt sich nur, wenn das Schema sehr komplex ist.

3. Export nach CSV/XLS und Import über mysql-client (nicht zu empfehlen)

Bei der DB handelte es sich um eine extrem große Text-DB mit sehr großen Feldinhalten (sehr viel Memo-Felder). Das kann beim Export im CSV oder Excel-Formate zu Problemen führen.

Außerdem gab es sehr viele Sonderzeichen (RTF!-Format) und Zeilenumbrüche in den Memofeldern, was einen Export in csv auch nicht gerade ratsam erscheinen läßt. Meine ersten Versuche mit csv und xls (auch in Excel sind die Feldgrößen immer noch auf 64000 Zeichen beschränkt!) waren dementsprechend entmutigend.

4. XML-Export aus Access und import über mysql-client (einzig empfehlenswertes Vorgehen für Datenmigration)

Streßfrei gestalten sich deshalb der Export nach XML, weil MS Access nur in diesem Format vernünftiges UTF-8 exportiert und die langen Memofelder NICHT kürzt. Außerdem verursachen Zeilenumbrüche und Hochkommas in den Memofeldern keine Probleme.

Ab MySQL 5.6 kann dann XML direkt importiert werden (s. Doku):

mysql> LOAD XML LOCAL INFILE 'person.xml'
-> INTO TABLE person
-> ROWS IDENTIFIED BY '<person>';