Access zu MySQL

Dieser Artikel beschreibt, wie man von einer vorhandenen MS-Access-Datenbank auf eine MySQL-Datenbank umsteigt. Es werden alle Daten aus der Access-Datenbank kopiert in eine neue MySQL-Datenbank.

Dieser Artikel geht davon aus, dass ein MySQL-Server bereits installiert ist und funktioniert.

Es werden 2 Tools verwendet:

Daten aus Access exportieren (Dump-Datei erzeugen)

Zuerst exportieren wir alle Daten aus Access. Es wird eine Text-Datei mit SQL-Befehlen (eine sog. Dump-Datei) erzeugt, die später von MySQL zum importieren der Daten gelesen werden kann.

Wir verwenden zum Erzeugen der Dump-Datei das Programm ,,Bullzip Access to MySQL" (http://bullzip.com/products/a2m/info.php).

Hinweis: Das Bullzip-Programm bietet auch Optionen, um nicht nur die Daten, sondern auch die Datenbank-Struktur in die Dump-Datei zu exportieren. Diese Optionen verwenden wir nicht, weil damit alle Beziehungen (Foreign-Key-Constraints) verloren gehen würden, da das Programm diese nicht exportieren kann.

1. Access-Datei auswählen

2. Datenbank-Namen und Typ auswählen

Geben Sie hier den Namen ein, den die MySQL-Datenbank erhalten soll.
Die Storage-Engine ist InnoDB (das wir aber nur Daten exportieren, also nur INSERT-Statements erzeugen, spielt diese Auswahl hier eigentlich keine Rolle).

3. Tabellen auswählen (alle)

4. Optionen einstellen

Hier ist wichtig, nur diese Optionen zu wählen:
- Transfer records
- Include column list...

Dump-Datei anpassen

Damit der Import der Dump-Datei später auch tatsächlich ohne Fehler abläuft müssen wird die Dump-Datei bearbeiten.

Suchen Sie diese Zeilen (ziemlich am Anfang der Datei) und löschen Sie diese:

  CREATE DATABASE IF NOT EXISTS `faktura_hau`;
  USE `faktura_hau`;

(Wobei statt `faktura_hau` der Name der Datenbank erscheint, den Sie selber im Dialog eingegeben hatten). Diese Zeilen müssen gelöscht werden weil Sie eine neue Datenbank erzeugen und auswählen. Dies erledigen wir aber in einem separaten Schritt.

Nachdem Sie die oben genannten Zeilen gelöscht haben, fügen Sie an die Stelle der gelöschten Zeilen diese neuen Zeilen ein:

  SET FOREIGN_KEY_CHECKS=0;
  
  DELETE FROM OPT_NUMBERS;
  DELETE FROM REF_APPLOG_CATEGORY_NAME;
  DELETE FROM REF_CONTACT_PHONE;
  DELETE FROM REF_CONTACT_RELATION_PROPERTY;
  DELETE FROM REF_CONTACT_RELATION_TYPE;
  DELETE FROM REF_DECEASE_ORDER_APPOINTMENT;
  DELETE FROM REF_DECEASE_ORDER_TYPE;
  DELETE FROM REF_ORDER_TEXT_POSITION;
  DELETE FROM REF_ORDER_TYPE;
  DELETE FROM REF_QUANTITY_UNIT;
  DELETE FROM TBL_CONTACT_CATEGORY;
  DELETE FROM TBL_PAYMENT_CONDITION;
  DELETE FROM TBL_PRODUCT_TAX;
  DELETE FROM TBL_STOCK;

(Die 'SET...' Zeile deaktiviert die Prüfung von Beziehungen während des Imports, die 'DELETE...' Zeilen entfernen vor dem Import Standard-Einträge in der Datenbank, die der Dump bereits enthält).

Ganz am Ende der Dump-Datei fügen Sie noch diese Zeile ein:

  SET FOREIGN_KEY_CHECKS=1;

Mit diesem Befehl wird die Prüfung von Beziehungen wieder aktiviert.

Zeichensatz der Dump-Datei anpassen

Eventuell muss noch die Kodierung (Zeichensatz) angepasst werden. Unter Linux kann dafür das Tool iconv verwendet werden:

  iconv -f UTF-8 -t latin1 dump-dateiname.sql > dump-dateiname.latin1.sql

oder (falls es zum Abbruch kommt, wegen Euro-Symbolen im Text):

  iconv -f UTF-8 -t ISO-8859-15 -c faktura.20110729.sql > faktura.20110729.latin1.sql

Hintergrund: latin1 (ISO-8859-1) enthält kein Euro-Symbol, in ISO-8859-15 (aka. latin0 oder latin9) wurde das aufgenommen.

Die -c Option verhindert die Ausgabe von nicht konvertierbaren Zeichen.

MySQL Datenbank erzeugen

Um Die Datenbank zu erzeugen und die Daten zu importieren muss nun folgendermaßen vorgegangen werden:

  1. Datenbank auf dem MySQL-Server erzeugen
  2. MySQL-Script zum erstellen der Tabelle ausführen
  3. Dump-Script, dass oben erstellt wurde, zum importieren der Daten ausführen.

Diese Schritte können mit einem MySQL-Clienten der Wahl gemacht werden. Ich nutze dafür gerne den MySQL-Kommandozeilen-Client. Da dies aber nicht jedermanns Sache ist, folgt hier eine Beschreibung, wie das mit dem Grafischen Programm ,,MySQL Workbench" (http://www.mysql.com/downloads/workbench/) gemacht werden kann:

Starten Sie das programm MySQL Workbench

Wenn im Bereich ,,Server-Administration" Ihr Datenbank-Server noch nicht auftaucht, dann können Sie ihn mit ,,New Server Instance" hinzufügen.

Erzeugen der Datenbank und importieren der Daten

  1. Starten Sie den SQL-Editor und öffen Sie dann die Verbindung zum MySQL-Server durch Doppelklick auf Ihren Servernamen im Bereich ,,SQL-Developement".
  2. Klicken Sie mit der rechten Maustaste links im Object-Browser und wählen Sie im Kontextmenü ,,Create Schema" um eine neue Datenbank zu erzeugen.
  3. Sobald die Datenbank erzeugt ist, klicken Sie im Object-Browser rechts auf den Namen der Datenbank und wählen dann im Kontextmenü ,,Set as Default-Schema".
  4. Klicken Sie nun im Menü ,,File" auf ,,Open SQL-Script". Wählen Sie die Datei ,,Faktura.SetupMySQL.sql" aus. Sie finden diese Datei im Installationsverzeichnis im Ordner ,,profiles\default\dbs\".
  5. Klicken Sie nun im Menü ,,Query" auf ,,Execute (All or Selection").

Damit ist die Datenbank erzeugt.
Der Import der Daten erfolgt ebenfalls im SQL-Editor.

Damit unsere ,,DELETE..." Befehle nicht vom SQL-Editor abgelehnt werden, muss ein Option angepasst werden:
Menü ,,Edit -> Prefences", Register ,,SQL-Editor": Den Haken bei ,,Forbin UPDATE an DLETE without WHERE clause" entfernen.

  1. Klicken Sie nun im Menü ,,File" auf ,,Open SQL-Script". Wählen Sie die Dump-Datei, die Sie vorhin erzeugt haben.
  2. Klicken Sie nun im Menü ,,Query" auf ,,Execute (All or Selection").

FERTIG

Suchen