Vielleicht kennt ihr das ja auch eigentlich gibt es ein sogenanntes führendes System um das Tagesgeschäft eines hyper-mega-global Konzerns zu realisieren - häufig SAP. Im Prinzip kann SAP ja alles, zumindest irgendwie. Da dieses irgendwie sich häufig recht zeit- und kostensintensiv gestaltet gibt es sogenannte Übergangslösungen (z.B. auf Microsoft Excel oder Microsoft Access Basis). Manchmal kommt es vor das es sich um umfangreichere Übergangslösungen (=temporäre Subsysteme) handelt. Diese Übergangslösungen sind teilweise recht schwierig auszuradieren, weil kostengünstig, zuverlässig, tief verwurzelt und ein Wechsel in das integrierte System bringt nicht den großen Vorteil das sich der Aufwand zum Zeitpunkt der Analyse rechnen würde.
Diesmal war wieder einer dieser Tage an denen ein temporäres Subsystem in Frage gestellt wurde. Nach ausgiebiger Diskussion wurde beschlossen, das Subsystem macht doch mehr als ursprünglich erwartet, also bleibt es. Allerdings müssen einige Daten aus dem Subsystem ins Hauptsystem.
Meine Stunde schlägt.
Umgebungsparameter: Keine Dokumentation, kein Ansprechpartner da ursprünglicher Hersteller übernommen und Produkt in neues Produkt "integriert" wurde und auch sonst darf ich auf keinerlei Support hoffen. Deja Vu - nein normale(?) Realität. Einen Vorteil gibt es diesmal - die Datenbank liegt auf einem Microsoft SQL Server 2000 und ich habe dbo-Rechte.
Gesagt getan erstmal schauen wie die DB aussieht, vielleicht gibt es ja ein Schema. Naja kein Schema vorhanden und die Datenbanktabellen ca. 800 an der Zahl alle recht kompakt benannt - kein Tabellenname länger als 8 Zeichen. Aber wozu gibt es denn in Visio Professional den Menüpunkt Datenbank Reverse-Engineering. DSN für den SQL-Server eingerichtet alle Tabellen ausgewählt, Warnhinweise gelesen und Programmvorschläge artig befolgt. Hatte ja bereits eingeplant das dies länger dauern wird, also so gegen 17:30 Uhr das Büro verlassen und Rechner über Nacht laufen lassen.
Heute morgen gab es nur den lapidaren Hinweis nicht genügend virtueller Arbeitsspeicher und Visio strahlte mich mit einem leeren Zeichenblatt an. Hatte ich mir schon irgendwie gedacht bei 800 Tabellen und den Warnhinweisen. Wäre ja auch zu einfach gewesen.
Glücklicherweise fiel mir noch ein das ich als Orientierungshilfe ein Stückpapier hatte, welches aus dem Subsystem ausgedruckt wurde -> Feldinhalte. Naja eine Suche über alle Tabellen nach bestimmten Feldinhalten im SQL-Server in der Form von grep wäre nett, aber gibt es wohl nicht. Einen Dump im Klartext wie ich ihn von MySQL kenne gibt es auf dem SQL-Server leider nicht. Alle Tabelleninhalte einzeln per DTS in ein Textfile zu verfrachten ist auch nicht das was man wirklich will. Da viel mir doch noch was ein bcp. Das Teil wird ja schon in meinem Transact-SQL Programming Handbuch aus dem letzten Jahrtausend erwähnt. Schnell ein Beispiel ausprobiert und schon war dieses geboren:
bcp rti.dbo.acct out acct.txt -Usa -Ppasswort -c
Schnell noch ein SQL-Skript generieren lassen damit ich Tabellennamen mittels vim und etwas regex in einer Batchdatei habe die diesen Vorgang für alle 800 Tabellen durchführt. Mit grep finde ich relativ schnell die betreffenden Tabellen. Aus den gewonnenen Erkenntnissen wird noch ein SQL-Skript gestöpselt das (fast) alle relevanten Daten für den Upload nach SAP bereitstellt. Noch ein paar Tests und schon ist eine kleine Schnittstelle geschaffen. Nebensächliches wie Laufzeit und Errorhandling kommt auch noch.
Gibt es ähnliche Erfahrungen?
BTW: SQL-Tutorial
erstellt: [ 10.04.2008 13:29:40 ]