Archiv für den Monat: September 2023

Einfaches Skript um mit mdb-tools eine MS Access-Datenbank in SQLite3 umzuwandeln

Hin und wieder stößt man auf Anwendungsfälle in denen Applikationen für Nischenprodukte einen vor merkwürdige Aufgaben stellen. So zum Beispiel ein im deutschen Kanurennsport häufig für die Regattaplanung genutztes Tool namens „GTS Regatta“. Im Grunde eine MS Access-basierte Anwendung mit zahlreichen Formularen und Funktionen rund um das Thema Kanuregatta.

Um die Daten praktisch in PHP-Anwendungen nutzen zu können, kann ein entsprechender ODBC-Treiber genutzt und direkt mit der Access-Datenbank gearbeitet werden. Dies ist, möchte man mit einem Linux-System arbeiten, etwas aufwändig und je nach ODBC-Treiber auch kostspielig.

Eine Alternative stellt die Konvertierung nach SQLite oder einer anderen Datenbank dar. Um dies mit kostenlosen Tools unter Linux möglichst leicht zu gestalten, bietet sich das folgende Skript an:

#!/usr/bin/env bash
# Usage: mdb-export.sh database.mdb/.accdb

fullfilename=$1
filename=$(basename "$fullfilename")
dbname=${filename%.*}

echo "Export schema"
mdb-schema "$fullfilename" sqlite > "$dbname.sql"

IFS=$'\n'
for table in $(mdb-tables -1 "$fullfilename"); do
    echo "Export table $table"
    mdb-export --insert=sqlite "$fullfilename" "$table" >> "$dbname.sql"
done

echo "Convert to sqlite"
sqlite3 "$dbname.sqlite3" < "$dbname.sql"

echo "Delete working data"
rm "$dbname.sql"