z6c - personal blog about topics

Christian Müller – Letzte Änderung: 22.08.2013 15:08 Uhr

MDB-Dateien (MSSQL Server/Access) lesen und konvertieren (CSV)

In einem aktuellen Projekt gilt es, aus einer Access Datei (.mdb) Daten zu extrahieren und in eine neue Anwendung (in diesem Fall MySQL) zu importieren.

Das Ziel (MySQL) ist letztlich Wurst, bekomm ich CSV raus, kann ich damit ja quasi alles machen, was ich will.

Witzigerweise ist die Datenbank Passwort geschützt (LOL), so daß ich die DB nicht mal eben in Access öffnen und exportieren kann. Witzig deshalb, da die Sicherheit des MDB Formats ungefähr so sicher ist, wie der Lizenz/Aktivierungscode von Windows 95 geheim war (Stichwort: (Modulo) %7).

Offensichtlich steht also in der Datei nur irgendwo drin "Zum Öffnen der Datei folgendes Passwort eingeben oder Pech gehabt", außer Access macht sich da aber niemand was draus. Möglicherweise ist der Inhalt aber auch verschlüsselt und die existenten Tools wissen, wie mans entschlüsselt.

Ein Blogeintrag von 2007 beschreibt die mdbtools die man zur Konvertierung nutzt in drei Schritten.

Und mehr braucht man auch nicht:

  • mdbtools installieren (Debian Paket)

Mit der MDB Datei rumspielen:

mdb-tables database.mdb

Listet die einzelnen Tabellen der Datenbank auf

mdb-schema database.mdb

Exportiert das Datenbankschema in ein MySQL-kompatibles Format, welches mit

mdb-export -I database.mdb table_name | sed -e 's/)$/)\;/' | mysql -u username -p database_name

direkt im selben Schritt in eine MySQL Datenbank geschrieben werden kann...

mdb-export -I database.mdb table_name

Gibt die Daten als CSV auf der Konsole aus

Hier eine Übersicht aller mdbtools, deren Funktion jeweils intuitiv aus dem Namen ersehen oder über die vorhandenen Manpages und Hilfe Dateien recherchiert werden kann:

mdb-array
mdb-export
mdb-header
mdb-hexdump
mdb-parsecsv
mdb-prop
mdb-schema
mdb-sql
mdb-tables
mdb-ver

Kommentare für diesen Artikel noch nicht freigeschaltet.

Bitte eine Email an kommentare@zentonic.org mit Betreff "Kommentare für Post 58"