Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] DBF Datei von 1992 einlesen?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] DBF Datei von 1992 einlesen?

    Hallo,

    Ich baue gerade am Rechnungswesen für eine KFZ Werkstatt und verwende die alten *.DBF Dateien aus dem alten Dosenprogramm.

    Die einzige Hürde die ich noch nicht nehmen konnte ist der saubere Import derselben.

    phpMyAdmin scheitert lokal an der Größe der Dateien mit über 140.000 Einträgen.

    Navicat for MySQL importiert zwar alle Datensätze, nur fehlen die Felder wenn z. B. Umlaute enthalten sind und ich UTF-8 verwende.
    1250 (ANSI) und 28592 (ISO 8859-2 Central Europe) bringen auch nicht das gewünschte Ergebnis.

    Ich bin mir sicher , dass es einfachere oder bessere Wege des Imports gibt.
    Wer kann helfen?

  • #2
    ich hab regelmäßig mit sehr großen CSV-Dateien zu tun und schreibe dazu immer kleine Import-Scripts:

    PHP-Code:
    ...
    $z 0;
    $fp fopen$filename"r" );
    while (
    $teile fgetcsv($fp1024,";")) {
        
    $z++;
        if ( 
    $z 500 == ) echo $z '<br />'// durch Browserausgabe Timeout verhindern 
        
    if ( $z == ) continue; // Überschriftzeile überspringen
        
        
    foreach($teile as $key=>$value) {
            
    $teile[$key] = utf8_encode(trim($value));
        }

      ...

      
    $sql "INSERT INTO ..."
    Wenn du die DBF-Dateien ähnlich zerlegen kannst, dann kommst du so sehr gut weiter.
    [PHP]if ($var != 0) {
    $var = 0;
    }[/PHP]

    Kommentar


    • #3
      Gute Idee, nur liegt das DBF soweit ich sehen kann im Binärformat vor und kann so nicht zerpflückt werden.
      Trotzdem Danke!

      Kommentar


      • #4
        Hast du schon dbf2mysql ausprobiert? Das wird zwar nicht mehr weiterentwickelt, wie es aussieht, aber vielleicht funktioniert es ja trotzdem.
        Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

        Kommentar


        • #5
          Hab leider kein Linux, gibt es eine Alternative dazu?

          Kommentar


          • #6
            Zitat von Registrierer Beitrag anzeigen
            phpMyAdmin scheitert lokal an der Größe der Dateien mit über 140.000 Einträgen.
            Hast du denn Scriptlaufzeit und Speicher entsprechend angepasst?
            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

            Kommentar


            • #7
              Nun, da hatte ich den zweiten Schritt vorm ersten getan
              Erst hatte ich mit Navicat for MySQL eine SQL Datei erzeugt und beim einlesen dieser scheiterte phpMyAdmin.

              Nützt mir also leider nichts, da phpMyAdmin keine DBF importieren kann, oder?

              Mir ist leider auch das Format der DBF nicht bekannt, weiß nur das sie in einem alten DOS Programm verwendet wird und 33 MB groß ist.

              Kommentar


              • #8
                Zitat von Registrierer Beitrag anzeigen
                Mir ist leider auch das Format der DBF nicht bekannt
                Na dann solltest du das erst mal herausfinden.

                Was willst du denn sonst mit Daten, deren Aufbau du gar nicht kennst?
                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                Kommentar


                • #9
                  Soweit ich weiß, gibt es dbf2mysql auch für Windows. Vielleicht ist es sogar mit MySQL mitgeliefert. Schau doch mal, ob bei dir im MySQL-Ordner von XAMPP (nutzt du XAMPP?) irgendwelche Tools rumfliegen.

                  Was ich sonst noch eben per Google gefunden habe, ist das: DBF to MySQL converter - a program to migrate DBF databases to MySQL server
                  Keine Garantie auf Fehler- und Virenfreiheit natürlich.
                  Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                  Kommentar


                  • #10
                    Kann man die dbf-Datei (Clipper dBase Foxpro?) vielleicht in ein lesbares Format konvertieren und dann mit Bordmitteln weiterverarbeiten? Ich dachte in #2, dass das schon geschehen sei.
                    Schau mal nach, ob der Kunde ein Programm namens DBU hat - mit dem kann man ne Menge Zeugs anstellen (boaah ist das lange her...). Irgendwann hab ich glaube ich auch mal dbf mit Excel laden können. Mit der neusten Version kann man ja auch mehr als 64.000 Zeilen verarbeiten.
                    [PHP]if ($var != 0) {
                    $var = 0;
                    }[/PHP]

                    Kommentar


                    • #11
                      Ich hatte im 1. Beitrag geschrieben, dass ich die DBF mit Hilfe von Navicat for MySQL einlesen und dann natürlich auch ausgeben und weiterverarbeiten kann.

                      Nur liegen nach dem Import Umlaute wie ä und ö als Fragezeichen, das ü als Kästchen usw. vor.
                      D. h. ich kann nicht ? durch ü oder ue ersetzen, weil es nicht eindeutig ist und ä oder ü sein könnte.

                      Ich müsste also schon beim lesen oder importieren das Problem lösen.

                      Mehrere DFB Leseprogramme die ich probierte, geben die Umlaute ebenfalls schon bei der Anzeige nicht richtig aus.

                      Kommentar


                      • #12
                        Zitat von Registrierer Beitrag anzeigen
                        Nur liegen nach dem Import Umlaute wie ä und ö als Fragezeichen, das ü als Kästchen usw. vor.
                        Und welche Zeichenkodierung hast du beim Import angegeben?
                        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                        Kommentar


                        • #13
                          Navicat kenne ich nicht.
                          Dann stell doch zum Import die Tabellen auf den passenden Zeichensatz ein und konvertiere danach erst wieder zu UTF-8.
                          [PHP]if ($var != 0) {
                          $var = 0;
                          }[/PHP]

                          Kommentar


                          • #14
                            Genau das ist der Punkt.

                            65001 (UTF - 8 )
                            1250 (ANSI - Central Europe)
                            28592 (ISO 8859-2 Central Europe)

                            hab ich bis jetzt getestet, ohne Erfolg.

                            Was würdet ihr empfehlen?

                            Kommentar


                            • #15
                              Zitat von Registrierer Beitrag anzeigen
                              1250 (ANSI - Central Europe)
                              Wie sieht's mit 1252 aus?

                              Was würdet ihr empfehlen?
                              Wenn alle Rumprobiererei nichts hilft - dann erst mal die Datei mit 'nem Hex-Editor anschauen, und die Bytewerte von ein paar solchen Sonderzeichen anschauen.
                              Dann kann man das mit Listen von DOS-Codepages abgleichen, um so vielleicht die richtige zu finden.
                              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                              Kommentar

                              Lädt...
                              X