none
Import alte Access-DB

    Frage

  • Hallo,

    ich muss Daten aus einer alten Access-Datenbank importieren, leider ist die Datenbank, bzw. die arin liegenden Daten, genauso wichtig, wie alt.

    Wenn ich diese Datenbank importieren/konvertieren möchte, bekomme ich nur Hyroglyphen..

    Die Datenbank besteht aus nur 1 Tabelle mit ca. 11500 Reihen und ist ca. 60 MB groß.

    Der Zugriff auf die Datenbank geschah imemr mittels eines Programms, leider ist dies noch aus Windows 95-Zeiten (16 Bit vermute ich) und lässt sich nicht öffnen.. Auch im Kompatibilitätsmodus seh ich nichts :(

    Hat jemand eine Idee, wie ich snnvole Daten aus der Datenbank bekomme?
    Donnerstag, 15. Oktober 2009 09:23

Antworten

  • Hallo KiloMike,

    wie schon von Olaf Helper angemerkt, könnten die Daten verschlüsselt sein, damit sie nicht direkt zu lesen sind. Die Art der Verschlüsselung würde dann im Code der zugehörigen Anwendung stecken. Dann könnte dir nur der Entwickler der Anwendung weiterhelfen oder eine Installation auf einem älteren Betriebssystem, unter dem die Anwendung noch läuft, um aus der Anwendung heraus einen Export zu machen - falls die Anwendung das unterstützt. Das wäre in jedem Fall das Einfachste.

    Das muss aber nicht sein. Vielleicht geht es auch anders. Hier schließe ich mich den Ausführungen von Robert und Olaf an. Überprüfe bitte, ob sich die Datei mit dem genannten Tool konvertieren lässt und werfe mal einen Blick auf die Datentypen.

    Viele Grüße
    Jan
    Donnerstag, 15. Oktober 2009 17:43
  • Wenn man die ursprünglich MDB so belässt, kann man die Tabelle in einer neuen MDB verknüpfen, das geht auch zu einer alten 2.0 Access MDB.
    Das Ergebnis sieht aber genauso aus, an der Konvertierung liegt es nicht.

    Export ist kein Problem, einfach ein Modul einfügen, Verweis auf "Microsoft ActiveX Data Objects 2.8" setzen, Exportpfad anpassen und ab damit; bei mir waren die 11.500 Dateien mit 42 MB innerhalb 20 Sekunden draussen.

    Nur was damit anfangen?

    Auch interessante, was die Übersicht der Größe ergibt
    SELECT LTAs.ID, LTAs.Volltext, Len([Volltext]) AS Laenge
    FROM LTAs;

    Es sind immer Größen, die auf 2er Potenzen und deren Summen raus laufen. Also BLOB, weil Block-Größen?

    Wenn die ersten 14 Zeichen der Header sind, dann weiß ich nicht, für welche Dateiart. Windows interessiert sich nicht dafür, könnte man vielleicht Linux fragen.

    Mal indiskret gefragt, was sind den das für Daten, die Du da drucken kannst?

    Option Compare Database
    Option Explicit
    
    Public Sub ExportLta()
        Dim sql As String, rs As ADODB.Recordset
        Dim streamBin As ADODB.stream
        Dim bin() As Byte, bytes() As Byte
        Dim loops As Long, str As String, id As Long
        
        sql = "SELECT * " & _
              "FROM LTAs"
        Set rs = New ADODB.Recordset
        rs.Open sql, CurrentProject.Connection
        
        Set streamBin = New ADODB.stream
        streamBin.Type = adTypeBinary
        
        Do Until rs.EOF
            id = rs.Fields("ID").Value
            
            str = rs.Fields("Volltext").Value
            ReDim bytes(Len(str) - 1)
            For loops = 0 To Len(str) - 1
                bytes(loops) = Asc(Mid$(str, loops + 1, 1))
            Next loops
            
            streamBin.Open
            streamBin.Write bytes()
            streamBin.SaveToFile "D:\Export\" & id & ".bin", adSaveCreateOverWrite
            streamBin.Close
            
            rs.MoveNext
        Loop
        rs.Close
        Set rs = Nothing
            
    End Sub

    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Freitag, 16. Oktober 2009 11:13
  • Hallo KiloMike,

    Ich habe mit VisData (http://www.plunder.com/VISDATA-EXE-download-c14f17276e.htm)

    in die Datenbank hineingeschaut und konnte folgendes sehen:

    Es sind 11586 Einträge und das Feld Volltext von der Tabelle LTAs ist von Type=12 das bedeutet ein Memo Feld.

    Dieses Feld ist irgendwie „verschlüsselt“, man kann nicht verstehen was da drin steht.

    Die Datenbank wurde am 11 Dezember 2006 erstellt.

    Gepostet auch hier: http://groups.google.com/group/de.comp.datenbanken.ms-access/browse_thread/thread/4a0565d9a978fe90






    Grüße,

    Robert

    Montag, 26. Oktober 2009 11:49
    Besitzer

Alle Antworten

  • So sieht der Mist übrigens aus, der aus der DB kommt:

    http://docs.google.com/View?id=dhm6z4vs_37c3nb9vg3
    Donnerstag, 15. Oktober 2009 09:24
  • Hallo KiloMike,

    in welchem Format liegt denn die Access-Datenbank vor (97, 2000,...)?

    Kannst du die Datenbank fehlerfrei direkt in Access öffnen? Welche Version verwendest du?

    Gruß
    Jan
    Donnerstag, 15. Oktober 2009 11:29
  • Hallo,

    in welcher Version die mdb vorliegt, kann ich dir leider nicht sagen.. Ich versuche die DB in Access 2003 mit Converter zu öffnen, die konvertieren meldet auch efolgreichen Durchlauf, leider mit entsprechendem Mist als Ergebnis..
    Donnerstag, 15. Oktober 2009 13:17
  • Hallo KiloMike,

    hast du schon versucht, die Tabelle aus der alten Datenbank in eine neue zu importieren? Das heißt: In Access 2003 eine neue leere Datenbank erstellen. Dann unter "Datei -> Externe Daten -> Importieren" die alte Access-DB und im nächsten Schritt die Tabelle auswählen. Dabei wird die alte Tabelle in die neue Datenbank übernommen, ohne dass eine Konvertierung der alten Datenbank stattfindet.

    Viele Grüße
    Jan
    Donnerstag, 15. Oktober 2009 13:51
  • Hallo KiloMike,

    Mit diesem Konverter versuchst Du?

    Access 2.0 Converter for Access 2003 à http://www.microsoft.com/DownLoads/details.aspx?FamilyID=91c944f8-f3ab-41e9-902a-2255a66e1c4a&displaylang=en

    Noch älter wäre dann Access 1.0 und Access 1.1.

    Grüße,

    Robert

    Donnerstag, 15. Oktober 2009 15:09
    Besitzer
  • Hallo KiloMike,

    welche Datentypen haben den die Felder?

    Wenn ich mir den Screenshot ansehe, finde ich schon mal auffällig, das immer die ersten 14 Zeichen immer gleich sind.
    Da käme mir schon mal der Verdacht hoch, dass das BLOBs und diese 14 Zeichen die Header-Informationen sind; allerdings wüsste ich nicht, für welchen Datentypen es sein könnte.

    Dann gebe es noch die Variante, das die Daten verschlüsselt sind, damit sie nicht jedermann (wie Du ;-) sie lesen kann.
    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Donnerstag, 15. Oktober 2009 15:24
  • Hallo,

    also auch der Import bringt das gleiche Ergebnis :(

    Angenommen es wären BLOBs, wie kann ich das feststellen, und wie bekomme ich die Daten dann da raus? Es geht mir hier primär um ein Feld, dieses "Volltextfeld", welchen Datentyp es hat: keine Ahnung, aber BLOB klingt nicht doof..
    Donnerstag, 15. Oktober 2009 16:06
  • Wenn Du die Tabelle in der "Entwurfsansicht" öffnest, bekommst Du eine Auflistung der in der Tabelle enthaltenen Felder und wenn Du eines anklickst, stehen unten die Details zum jeweiligen Felde, eben wie auch der Datentyp.

    Mit Export beschäftigen wir uns, wenn es fest steht, ob es Binärdaten sind und welche...
    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Donnerstag, 15. Oktober 2009 16:25
  • Hallo KiloMike,

    wie schon von Olaf Helper angemerkt, könnten die Daten verschlüsselt sein, damit sie nicht direkt zu lesen sind. Die Art der Verschlüsselung würde dann im Code der zugehörigen Anwendung stecken. Dann könnte dir nur der Entwickler der Anwendung weiterhelfen oder eine Installation auf einem älteren Betriebssystem, unter dem die Anwendung noch läuft, um aus der Anwendung heraus einen Export zu machen - falls die Anwendung das unterstützt. Das wäre in jedem Fall das Einfachste.

    Das muss aber nicht sein. Vielleicht geht es auch anders. Hier schließe ich mich den Ausführungen von Robert und Olaf an. Überprüfe bitte, ob sich die Datei mit dem genannten Tool konvertieren lässt und werfe mal einen Blick auf die Datentypen.

    Viele Grüße
    Jan
    Donnerstag, 15. Oktober 2009 17:43
  • Mal "optisch" überflogen, kann ich mir nicht vorstellen, das die Konvertierung fehlerhaft war.
    So invariant, wie die dargestellte Zeichen sind, würde ich weiterhin sagen: Blob oder Codiert.

    Etwas interessant sind auch Zeile 4 und 5; Nach den fixen 14 Zeichen kommen ungefähr 20 Zeichen, die sich in den beiden Zeilen ~ungefähr~gleichen~.
    Da könnte ich doch etwas darauf spekulieren, das es verschlüsselt ist; ist aber wirklich nur reine Spekulation. Ein simples XOR ist es jedenfalls nicht; schon ausprobiert :-).
    Es soll ja auch wirklich Firmen geben, die so was machen: "Du willst an Deine eigene Daten? Ja klar, geht, aber ... das kostet...". Ist aber die absolute Ausnahme.

    Apropo Verschlüsselung; die aktuellen Access Version bieten von Haus aus auch Verschlüsselung; ich weiß gar nicht ab welcher Version das geht!?
    Vielleicht war die ursprüngliche MDB verschlüsselt und es wurde nicht richtig umgesetzt; nur so ein Gedanke!?!
     


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Donnerstag, 15. Oktober 2009 19:32
  • Also wenn ich in Access die Spalte anschaue is das vom Typ Memo..

    Habe auch mal mittels c# die blob-spalte ausgelesen und als filestream ausgegeben, selber murks, auch mittels hex-editor nicht erkennbar... installiere jetz grad das programm auf ner windows 98 vm
    Donnerstag, 15. Oktober 2009 19:47
  • "Memo" heisst, das es "einfach nur" langer Text ist; entgegen "Zeichen", die auf 255 Zeichen begrenzt sind. Es somit eher ein CLOB, ein "Character Large Object".

    Damit würde ich mal behaupten wollen, es handelt sich um verschlüsselte Daten.
    Tja, wenn dem so ist, hast Du nun ein Problem: Wie diese entschlüsseln?

    Womit wir zurück zum Post von Jan kommen, da wird Dir nur der Hersteller/Entwickler der Software weiter helfen können.
    Oder gibt es in der MDB auch noch "Module", in der der Ver-/Entschlüsselungs-Algo enthalten ist? Sieh mal nach.  
    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Donnerstag, 15. Oktober 2009 19:54
  • OK. In der Win98-VM funktioniert das Programm :D

    Habe mal die DB hochgeladen, nen Zugriff auf die Spalte direkt wäre trotzdem großartig..

    https://cid-a27dd54d9a3a514a.skydrive.live.com/self.aspx/LTA/zip.zip


    Donnerstag, 15. Oktober 2009 20:32
  • Hallo KiloMike,

    hat die Anwendung irgendeine Funktion, mit der alle Daten ausgegeben werden können? Eventuell gibt es wenigstens eine Funktion, um alle Daten ausdrucken zu können. Dann könntest du den Ausdruck in eine Datei umleiten. Wahrscheinlich musst du die Ausgabe dann noch formatieren, aber da du - wie ich oben lese - programmieren kannst, sollte das ja kein allzu großes Problem sein. Auch falls der Ausdruck als Bitmap oder ähnliches erfolgt, könnte man die Daten mit OCR dann wieder "einlesen".

    Viele Grüße
    Jan
    Donnerstag, 15. Oktober 2009 22:53
  • Der Link funktioniert nicht, ich schätze mal, die Berechtigungen fehlen.
    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Freitag, 16. Oktober 2009 05:44
  • Hallo udn Guten Morgen,

    der Zugriff sollte nun klappen. http://cid-a27dd54d9a3a514a.skydrive.live.com/self.aspx/.Public/LTA/LTASCD.zip

    Bzgl. des Exports: Ich kann in der Anwendung jedes Element einzeln öffnen udn auch drucken, soweit so gut. Alle auf einmal: Leider nicht :(

    Und ein weiteres Modul o.ä. in der DB: Fehlanzeige :(
    Freitag, 16. Oktober 2009 08:25
  • Hallo zusammen,

    also ich habe keine Möglichkeit gefunden, um die Daten auszulesen. Ich hab auch im Moment nur noch eine etwas aufwändigere Idee, wie man das lösen könnte. Aber vielleicht hat Olaf einen Weg gefunden?

    Jan
    Freitag, 16. Oktober 2009 09:37
  • Wenn man die ursprünglich MDB so belässt, kann man die Tabelle in einer neuen MDB verknüpfen, das geht auch zu einer alten 2.0 Access MDB.
    Das Ergebnis sieht aber genauso aus, an der Konvertierung liegt es nicht.

    Export ist kein Problem, einfach ein Modul einfügen, Verweis auf "Microsoft ActiveX Data Objects 2.8" setzen, Exportpfad anpassen und ab damit; bei mir waren die 11.500 Dateien mit 42 MB innerhalb 20 Sekunden draussen.

    Nur was damit anfangen?

    Auch interessante, was die Übersicht der Größe ergibt
    SELECT LTAs.ID, LTAs.Volltext, Len([Volltext]) AS Laenge
    FROM LTAs;

    Es sind immer Größen, die auf 2er Potenzen und deren Summen raus laufen. Also BLOB, weil Block-Größen?

    Wenn die ersten 14 Zeichen der Header sind, dann weiß ich nicht, für welche Dateiart. Windows interessiert sich nicht dafür, könnte man vielleicht Linux fragen.

    Mal indiskret gefragt, was sind den das für Daten, die Du da drucken kannst?

    Option Compare Database
    Option Explicit
    
    Public Sub ExportLta()
        Dim sql As String, rs As ADODB.Recordset
        Dim streamBin As ADODB.stream
        Dim bin() As Byte, bytes() As Byte
        Dim loops As Long, str As String, id As Long
        
        sql = "SELECT * " & _
              "FROM LTAs"
        Set rs = New ADODB.Recordset
        rs.Open sql, CurrentProject.Connection
        
        Set streamBin = New ADODB.stream
        streamBin.Type = adTypeBinary
        
        Do Until rs.EOF
            id = rs.Fields("ID").Value
            
            str = rs.Fields("Volltext").Value
            ReDim bytes(Len(str) - 1)
            For loops = 0 To Len(str) - 1
                bytes(loops) = Asc(Mid$(str, loops + 1, 1))
            Next loops
            
            streamBin.Open
            streamBin.Write bytes()
            streamBin.SaveToFile "D:\Export\" & id & ".bin", adSaveCreateOverWrite
            streamBin.Close
            
            rs.MoveNext
        Loop
        rs.Close
        Set rs = Nothing
            
    End Sub

    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Freitag, 16. Oktober 2009 11:13
  • An die Daten komme ich ran, ich meinte natürlich ein "unverschlüsseltes" Lesen, welches mir nicht gelang. Mir stellt sich ebenso die Frage, um was für Daten und eine Anwendung es sich handelt. Gibt es wirklich keine einzige Möglichkeit, mehrere Daten gleichzeitig anzuzeigen (per Filter, Sortierung, etc.)? Die Datenbank ist ja absolut minimalistisch und eine Anwendung für ein einzelnes Feld habe ich auch noch nie gesehen..
    Freitag, 16. Oktober 2009 11:40
  • Hi,

    die gesammte Anwendung besteht aus insgesamt 4 Datenbanken (mdb), alle anderen Tabellen und Spalten sind lesbar.

    Als Inhalt in dieser Spalte "Volltext" stehen Nachrichten/Mitteilungen aus einem Gesetzblatt/Vorordnung, um es allgemein auszudrücken.. In den anderen Datenbanken/Dateien wird auf einzelne Einträge verwiesen, udn angezeigt, ob diese durch ein anderes Schriftstück ergänzt und/oder ersetzt wurden, oder auf welches Sachgebiet sich dieses Schriftstück bezieht, wie gesagt, alles fein leserlich.. Nur diese eine Spalte wirft Rätsel auf..

    In dem Programm kann ich auch immer nur einen Datensatz öffnen, eine Mehrfachauswahl oder sowas -> Fehlanzeige..
    Freitag, 16. Oktober 2009 14:21
  • Dann gehe ich mal davon aus, das in richtig BLOB / Meta-Daten geht, die das Programm zum Druck laden kann; so was wie PostScript / PCL / PDF.
    Mehr kann ich dazu dann aber auch nicht sagen oder weiterhelfen.
    Könntest höhsten noch nachsehen, ob im Programmverzeichnisse irgendwelche Dokumentarten rumliegen, mit der Routine oben den Export zu machen, Dateiendung umbenennen und dann Doppelklick; mit etwas sehr viel Glück klappt es. 
    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Freitag, 16. Oktober 2009 14:49
  • Hallo KiloMike,

    ein auslesen der Daten auf "normalem" Weg scheint also nicht möglich bzw. unwahrscheinlich. Lässt sich die Anwendung komplett per Tastatur (ohne einen einzigen Mausklick) bedienen und so durch alle Datensätze navigieren? Lassen sich die einzelnen Texte in der Anwendung markieren und in die Zwischenablage kopieren?
    Da du über Programmierkenntnisse verfügst, hätten wir dann eine Chance, die Daten automatisiert über die Zwischenablage aus der Anwendung zu extrahieren, indem wir die Anwendung mit der Klasse SendKeys fernsteuern (jeden einzelnen Datensatz markieren, in die Zwischenablage kopieren und anderswo wieder einfügen, dann zum nächsten Datensatz wechseln und das Spielchen wieder von vorne, bis alle Datensätze "ausgelesen" sind). Falls es keine andere Möglichkeit gibt und die Daten so wertvoll sind, dass sich der Aufwand lohnt, wäre ich dann gerne weiter behilflich.

    Viele Grüße
    Jan
    Freitag, 16. Oktober 2009 15:22
  • Hallo KiloMike,

    Ich habe mit VisData (http://www.plunder.com/VISDATA-EXE-download-c14f17276e.htm)

    in die Datenbank hineingeschaut und konnte folgendes sehen:

    Es sind 11586 Einträge und das Feld Volltext von der Tabelle LTAs ist von Type=12 das bedeutet ein Memo Feld.

    Dieses Feld ist irgendwie „verschlüsselt“, man kann nicht verstehen was da drin steht.

    Die Datenbank wurde am 11 Dezember 2006 erstellt.

    Gepostet auch hier: http://groups.google.com/group/de.comp.datenbanken.ms-access/browse_thread/thread/4a0565d9a978fe90






    Grüße,

    Robert

    Montag, 26. Oktober 2009 11:49
    Besitzer
  • OK, Vielen Dank für die Info und die Mühen!!!!

    Haben jetz die Lösung "Virtuelle Maschine" genommen, schade, dass es so nicht geklappt hat :(

    Aber nochmal: Vielen Dank an alle für die Mühen!!!
    Montag, 26. Oktober 2009 12:56