Eve – data export / toolkit

CCP bietet auf der Webseite einen ziemlich umfassenden Dump ihrer Datenbank an, der etliche Megabyte Informationen über Agenten, Gegenstände und die Sonnensysteme enthält. Ich hab mir in den Kopf gesetzt, diese Information brauchbar und hübsch für das Web aufzubreiten, wie es schon unzählige andere Fanseiten seit Jahren machen. CCP selbst liefert eine Liste, unter welchen Adressen ihre Datensammlung bereits verfügbar ist.

Meine ersten Versuche werde ich – mit den Einschränkungen meines Webspaces – in PHP auf einer MYSQL-Datenbank machen. Die Daten liegen auf der offiziellen Webseite aber in Form eines Backups für MSSQL-Server + zugehöriger Tabellen-Definition vor. Die erste Hürde ist also groß, wenn man sich damit beschäftigen möchte.

MYSQL bietet als einzige mir bekannte funktionierende freie Möglichkeit ein „Migration Toolkit“ an, das eine MSSQL Datenbank (online/ nicht als backup) in eine MYSQL-Datenbank übersetzen kann. Vor der Konvertierung steht also zunächst die Installation eines Microsoft SQL Servers 2008 (in der kostenlosen Express-Variante) an, um das Backup dort zunächst einzuspielen und ihn als Quelle für die Migration zu verwenden.

Auf meinem (in diesem Bereich) unbelasteten Windows Vista musste ich vor der Installation das .Net-Framework, einen aktuellen Windows-Installer und die PowerShell manuell nach installieren. Hat man dieses Abhängigkeitsfeuerwerk gemeistert, ist die Installation zwar langwierig aber genauso problemlos, wie das anschließende Einspielen der Sicherungsdatei.

Um den frisch aufgesetzten Server im Folgenden zur Mitarbeit bewegen zu können, muss man zunächst im Konfigurationsmanager den TCP/IP Zugriff erlauben. (SQL Server Netzwerkkonfiguration-> Protokolle -> TCP/IP aktivieren und in den Einstellungen den Port 1433 bei IPALL eintragen).

Da mir die Benutzerverwaltung von Windows nicht sonderlich liegt, habe ich im Managment Studio noch einen neuen Benutzer mit MSSQL-Authenifizierung erstellt, ihm die Rolle „public“/“sysadmin“ verpasst und die entsprechende Datenbank zugewiesen. Danach funktionierte auch die Anmeldung aus der Migrations Toolkit.

Die Migration direkt auf den Server schlug aber fehl, da der Namen der Zieldatenbank fest aus Datenbanknamen und Schemanamen generiert wird und mir zum Erstellen einer neuen Datenbank die Rechte fehlen. Eine Option dieses Verhalten zu ändern, habe ich auch nach langer Suche im Netz nicht finden können. Das bestes Suchergebnis war dieses, mit dem ich aber auch nicht weiter kam.

Als letzten Ausweg habe ich eine lokale XAMPP Installation eingerichtet, in der Hoffnung die Daten nach der Migration auf den richtigen Server kopieren zu können. Um beide Systeme zur Zusammenarbeit zu überreden, musste ich in der my.cnf im Abschnitt „[mysqld]“ noch die Zeile „character-set-server = utf8“ ergänzen.

Die Anwendung lief anschließend ohne Fehlermeldung durch, so dass ich endlich die 242,7 MiB Daten im mySQL Format vorliegen hatte!

Zu diesem Zeitpunkt hatte mich schon dafür entschieden, mein Glück nicht auf die Probe zu stellen und die Datenbank zunächst lokal zu verwenden, da ich doch inzwischen eh alles Nötige auf der Festplatte installiert hatte.

Der Vollständigkeit halber aber doch noch der Versuch, die Daten auf den Webserver zu kopieren:

Die Datenbank umbennen, damit der Namen der Vorgabe meines Providers entspricht. Phpmyadmin brach nach der Hälfte ab und hinterließ großes Chaos, so dass ich ein – in weiser Voraussicht – erstelltes Backup mit MYSQL-Administrator einspielen musste. Generell scheint mySQL nämlich das Umbenennen einer Datenbank nicht zu unterstützen und PHP verschluckt sich an der Menge der Daten.

Besser:

Das MySQL-Backup gleich in ein Schema mit dem richtigen Namen einspielen und das Alte löschen.

Die Prozedur lief sowohl lokal (~2m), als auch auf meinem Webserver (~35m bei DSL 16000) ohne Fehler durch. Ich hoffe nur, dass ich mit meinen zahlreichen Fehlversuchen die Mitbenutzer meines Shared-Servers nicht zu sehr gestört habe. 🙂

Los gehts!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.