Jan Kirchmeyer: dBASE-Daten in MySQL

Hallo,
ich habe folgendes Problem:
Ich möchte eine große dBASE-Tabelle (1,2MB) in ein MYSQL-Format bringen. Nun hab ich mich hier im Forum erkundigt, wie andere das gemacht haben. Da wurde geraten, die dBASE-Tabelle zuerst in ACCESS zu laden und dann zu exportieren. Nun kann ich nicht mal die dBASE-Datei in ACCESS laden, da sie zu groß ist (laut ACCESS-Fehlermeldung).
Kann mir trotzdem jemand helfen (vielleicht mit EXCEL).
Ich möchte nämlich mittels PHP später Abfragen auf die Tabelle realiseren und aus diesem Grunde sollen die dBASE-Daten im MySQL-Format vorliegen.
Ich hoffe, jemand hat ne Lösung für mich!

Oder gibts vielleicht ne andre Möglichkeit?
Die Abfragen sollten aber schon mit SQL realisiert werden können, weil ich mich nun schon in SQL reingefuxt habe.

Viele Grüße Jan

  1. Hi!

    1,2 MB sollten für Access kein Problem sein.
    Hast Du die Daten importiert oder verknüpft?
    Vielleicht hasst Du beim Import auch den falschen
    DB-Treiber angegeben.

    Liebe Grüße
    fredy

    Hallo,
    ich habe folgendes Problem:
    Ich möchte eine große dBASE-Tabelle (1,2MB) in ein MYSQL-Format bringen. Nun hab ich mich hier im Forum erkundigt, wie andere das gemacht haben. Da wurde geraten, die dBASE-Tabelle zuerst in ACCESS zu laden und dann zu exportieren. Nun kann ich nicht mal die dBASE-Datei in ACCESS laden, da sie zu groß ist (laut ACCESS-Fehlermeldung).
    Kann mir trotzdem jemand helfen (vielleicht mit EXCEL).
    Ich möchte nämlich mittels PHP später Abfragen auf die Tabelle realiseren und aus diesem Grunde sollen die dBASE-Daten im MySQL-Format vorliegen.
    Ich hoffe, jemand hat ne Lösung für mich!

    Oder gibts vielleicht ne andre Möglichkeit?
    Die Abfragen sollten aber schon mit SQL realisiert werden können, weil ich mich nun schon in SQL reingefuxt habe.

    Viele Grüße Jan

    1. hallo,

      ich hab also in ACCESS erstmal ne leere datenbank erstellt und dann NEUE TABELLE-->TABELLE IMPORTIEREN-->als dateityp dBASE IV eingestellt und die tabelle gesucht und auf IMPORTIEREN geklickt. dann kam die fehlermeldung "Datensatz zu groß"

      vielleicht hilft dir das weiter?

      gruß jan

      1. hallo,

        ich hab also in ACCESS erstmal ne leere datenbank erstellt und dann NEUE TABELLE-->TABELLE IMPORTIEREN-->als dateityp dBASE IV eingestellt und die tabelle gesucht und auf IMPORTIEREN geklickt. dann kam die fehlermeldung "Datensatz zu groß"

        vielleicht hilft dir das weiter?

        gruß jan

        Hallo Jan,

        das könnte auch eine andere Ursache haben. Vielleicht ist Deine "dBase-Tabelle" eine Clipper-Base-Tabelle. In Clipper gab es nämlich Big-Strings mit 2040 Zeichen maximaler Länge. Und die würden natürlich in Access nicht reinpassen.

        Tom

  2. Hallo,

    Ich möchte eine große dBASE-Tabelle (1,2MB) in ein MYSQL-Format bringen. Nun hab ich mich hier im Forum erkundigt, wie andere das gemacht haben. Da wurde geraten, die dBASE-Tabelle zuerst in ACCESS zu laden und dann zu exportieren. Nun kann ich nicht mal die dBASE-Datei in ACCESS laden, da sie zu groß ist (laut ACCESS-Fehlermeldung).

    Hmm, eigentlich hat afaik Access kein Problem, größere Datenbestände zu importieren.
    Aber was solls. PHP besitzt ja eine rudimentäre Dbase-Schnittstelle (http://www.php.net/manual/de/ref.dbase.php), mit der Du zumindest einen Datenexport in eine CSV-Datei zustande bringen könntest. Diese Daten kannst DU dann in die mySQL-Datenbank importieren. Oder aber Du schreibst Dein PHP-Script so, daß es dies gleich für Dich erledigt.

    Grüße
      Klaus

    1. hallo,

      erstmal danke für deinen tipp.
      hab grad mal auf der seite nachgeschaut (link) aber da steht leider nix davon, wie man eine dBASE-datei in ein csv-Format bringt, so wie du mir das empfohlen hattest. kannst du mir das nicht mal genau u ausführlicher beschreiben?

      vielen dank und gruß jan

  3. Moin Jan,

    zunächstmal sind folgemde Überlegungen anzustellen:

    1. Wie ist die Struktur der dbase-Datei ? Ist sie 1:1 in sql umsetzbar.
    2. Welche Datentypen kommen vor ? Sind evtl. nicht kompatible dabei ? (Beim Datumsformat und bei Umlauten gibts i.d.R. Probleme)

    Es gibt - weiß nicht wo - ein Tool namens dbg2mysql. Dafür mußt Du aber die dbf-Datei im o.g. Sinne bearbeiten. Also Datum nach dtos usw.

    Ich selbst mache mir je nach Struktur der Datei mein Übersetzungs'progämmli' selber.

    Gruß von der Ostsee

    Hanjo

    1. Hallo Hanjo,

      gut dass Du darauf hinweist: Inkompatible Datentypen.

      Das einzige Problem, dass Du haben kannst, sind Memo-Felder. Memos werden in einer separaten Tabelle abgespeichert. In der Stammtabelle steht dann nur der Einsprungspunkt in Byte in die Blockstruktur der Memo-Tabelle.

      Memo-Datensätze zu übernehmen ist ohne Hochsprache schwierig, ließe sich aber in PHP zur Not aber auch realisieren.

      Grüße

      Tom

  4. Hallo Jan,

    dBase habe ich bis zur ...(darf man nicht sagen) benutzt und auch Tools in Pascal und C für Konvertierungen geschrieben.

    Ich würde Dir vorschlagen, am dBase-Prompt die Befehle

    Use AlteTabelle
    copy to NeueTabelle.txt sdf [delimited with "'"]
    Use

    zu benutzen.

    dann schaust Du Dir mal an, wie groß neue Tabelle geworden ist. Und mit einem vernünftigen Ascii-Editor (z.B. den aus der Turbo7-IDE oder Textpad) kannst Du dann auch reinschauen in die Tabelle.

    Diese Tabelle solltest Du dann direkt in MySQL übernehmen können. dazu braucht man keine von M$ requirierten Programme.

    Für den Zugriff auf MySQL empfehle ich MySQL-Front.

    Turbo7:      http://bitworks.de/programme/turbo7
    Textpad:     http://bitworks.de/programme/editoren
    MySQL-Front: http://bitworks.de/programme/MySQL-Clients

    Viele Grüße aus http://www.braunschweig.de

    Tom