Ein Kunde bat uns, den Datenbestand einer selbst programmierten Literaturdatenbank mit über 2000 Literaturquellen zu übernehmen. Bei dieser Größe ist ein händisches Eingeben nicht wirtschaftlich. Eine Datenmigration zwischen zwei Datenbanken mit unterschiedlichen Strukturen (Schemen) stellt immer eine besondere Herausforderung dar.

In einem ersten Schritt haben wir die bestehende Datenbankstruktur geprüft.

Screenshot der Microsoft Access Bibliothek-Datenbank

Offensichtlich handelt es sich hierbei hauptsächlich um klassische, nicht-digitale Literatur. Wie schon im letzten Beitrag beschrieben, unterstützt Librario seit kurzem auch das Verwalten, Entleihen und Zurückgeben von Buchexemplaren.

Anschließend wurde in Microsoft Access eine Abfrage realisiert, welche die relevanten Daten zusammenfasst und in ein allgemeines Tabellenformat (CSV) exportiert.

Entwurf der Abfrage in Microsoft Access

Als nächstes schrieben wir ein eigenes Skript, welches die CSV-Datei in die Librario-Datenbank einliest. Hierbei galt es, verschiedene Sonderfälle und Inkonsistenzen zu lösen und den Datenbestand nach Möglichkeit noch zu verbessern und zu säubern.

  • Teilweise waren Informationen zur Ausgabe enthalten - Manchmal im Titel-Feld, manchmal im Untertitel-Feld. Die Auflage wurde teilweise eingeklammert oder alternativ mit einem Komma vom Titel getrennt. Regulären Ausdrücken, welche wir hier für den geneigten Leser abbilden: /(.*)\s+\(?(\d+\.?\s*(?:Auflage|Aufl.?))\)?/i, erlaubten es uns, diese Information herauszufiltern und das zugehörige Datenbankfeld zu befüllen.
  • Mehrere Autoren waren teilweise mit Semikolon (;), Komma (,) oder dem Wort "and" getrennt, gleichzeitig waren Autorennamen im Format "Nachname, Vorname" angegeben - die Bedeutung des Komma-Symbols war also mehrdeutig. Um dieses Problem zu lösen setzten wir ebenfalls eine Vielzahl von Regulären Ausdrücken ein. Am Ende mussten wir nur eine Handvoll Einträge manuell nachbearbeiten.
  • Häufige Rechtschreibfehler und Inkonsistenzen bei bekannten Herausgebern konnten korrigiert werden: Zum Beispiel wurden verschiedene Schreibweisen für "DIN Deutsches Institut für Normung e.V." oder "Deutsche Gesellschaft für Geotechnik e.V." benutzt.
  • Der Kunde hatte die Spalte "Untertitel" ausgiebig befüllt (auch mit kleinen Beschreibungen) um in Access gute Suchergebnisse zu erzielen. Aus Gründen der Performance ist in Librario das Feld "Untertitel" aber auf 255 Zeichen begrenzt. Für Beschreibungen ist das Feld "Abstract" gedacht. Um die Daten unseres Kunden nicht zu zerstören, wurden zu lange Untertitel in das Feld "Abstract" verschoben und außerdem ein Tag #Fehler: Untertitel zu lang gesetzt. So können die betreffenden Quellen auch später noch für eine gesonderte Bearbeitung ausgegeben werden.
  • Zu guter Letzt setzten wir unseren Algorithmus zur Überprüfung von ISBN-Nummern ein. Die Quellen, bei denen ein eine falsche ISBN gefunden wurde, erhielten einen Tag #Fehler: ISBN ungültig.

Der eigentliche Import ging danach sehr schnell.

2837 Publikationen erfolgreich importiert

Mit Hilfe der Fehler-Tags #Fehler: Untertitel zu lang, #Fehler: ISBN ungültig und #Fehler: Kein Titel wird das manuelle Überprüfen und Korrigieren beschleunigt, da alle betroffenen Publikationen zusammen gefasst werden.

Der Aufwand für eine Datenmigration ist stark davon abhängig, wie ordentlich die Daten im Vorgänger-System gepflegt wurden und wie komplex es aufgebaut wurde. Derzeit können nur die Metadaten der Publikationen (Titel, ISBN-Nummer, Autor, Tags, Leihexemplare etc.) übernommen werden. Medieninhalte, wie PDFs, müssen weiterhin per Hand hinzugefügt werden.

Wir sind unseren Kunden gerne bei der Migration zu Librario behilflich. Sprechen Sie uns an, falls Sie ebenfalls einen großen Datenbestand haben, den Sie zu Librario übernehmen wollen. Wir unterstützen Sie gerne.