Announcement

Collapse
No announcement yet.

Datenimport in Tabelle bricht ab

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenimport in Tabelle bricht ab

    So, bin ich endlich hier gelandet. Also hallo miteinander

    Habe da leider ein Problem mit dem Import von Daten in eine Tabelle. Ist mir echt peinlich, weil mir das bei keiner der in den letzten zwanzig Jahren verwendeten DBs passiert ist.

    Zuerst zur Konfiguration:
    SW: Linux 64bit - Apache2.0 - PHP5 - MySQL5.0.75; HW: RAM 4 GB, Partition 70 GB.

    Ziel:
    Import von ca. 70 Dateien in eine Tabelle, macht so 2,4M Datensätze.

    Ablauf:
    Jede Datei wird zeilenweise eingelesen,
    1. Variablen für Datenfelder werden belegt.
    2. Datensatz wird über zwei Felder (PRIMARYKEY) auf Existenz geprüft, wenn fehlt, angelegt.
    3. Update Datensatz
    Next

    Ergebnis 1:
    Abbruch nach ca. 78K Datensätzen, keine Fehlermeldung, obwohl über PHP durchgeschleift, keine Bildschirmaktualisierung (eben weil Abbruch).

    Reaktion:
    Bevor ich mit einem Problem an die "Öffentlichkeit" wende, versuche ich mich in verschiedenen Manuals wissend zu machen. Hat net viel genützt, auf den Query Cache bin ich aber gestoßen, daher in der mysql.cnf den Wert von 16MB auf 256MB erhöht.

    Ergebnis 2:
    Abbruch nach ca. 88K Datensätzen, also keine Lösung.

    Conclusio:
    Entweder ich stehe vollkommen auf der Leitung oder total auf dem Schlauch. Manchmal siehst halt den Wald vor lauter Bäumen nicht.
    Da der gleiche Effekt auch auf unserem Server unter Windoof/IIS auftritt, kann die Ursache nur bei PHP oder MySQL liegen. Ich fange halt mal bei MySQL mit der Fragerei an.

    Wenn mir jetzt jemand einen Tipp/Tritt geben könnte?
    LG jbs4boinc.at
    ...und all den heimlichen Lauschern widme ich Mozarts Kanons KV 231 und KV 233

  • #2
    Ich fang dann auch mal ganz unten an mit den Fragen:

    Wie lange läuft das Script, bis es abbricht?
    Führst du das Script im Browser aus oder per Konsole?
    "A common mistake that people make
    when trying to design something completely foolproof
    is to underestimate the ingenuity of complete fools.
    "
    >>> Douglas Adams, Mostly Harmless
    -------------------------------------------------------
    Techcrawler.de | JaMT | deCHK | Extra-Bonus-Shopping.de | Scour

    Comment


    • #3
      Also ich empfehle dir da ein echtes ETL-Tool
      das macht die Sache viel einfacher
      am besten Kettle-Spoon von http://www.pentaho.org
      Ist Opensource, schnell und funzt sehr gut
      Alternativ nehme ich auch gerne den
      MySQL Administrator aus den MySQL GUI-Tools für Importe.
      Allerdings kannst du da keine Umformungen vornehmen

      Greetz
      Rotkaeppchen

      Comment


      • #4
        Originally posted by Sascha P. View Post
        Wie lange läuft das Script, bis es abbricht?
        Ich gehe davon aus, dass nur eine bestimmte Datei, nennen wir sie user.gz am Abbruch beteiligt ist. Die Datei hat eine Größe von 4,7MB und enthält Daten in der Größe von 33,4MB. Entpacken ist nicht, weil die gz-Funktionen von PHP das sowieso automatisch tun. Ich kann also ganz bequem mit gzopen(), gzgets() und eregi() die Daten auslesen.

        Da habe ich also aus der Tabelle zuerst die betreffenden Datensätze entfernt:
        Existenzprüfung + Datensatz anlegen + Daten schreiben, Abbruch nach 43,02 sec, Ergebnis 44.232 Datensätze.
        Das gleiche über die schon bestehenden Datensätze: Abbruch nach 40,47 sec, Ergebnis 53.064 Datensätze.
        Noch zweimal getestet, Abbruch nach 39,83 und 35,67 sec. Anzahl Datensätze unverändert.

        Die Abbruchzeit wird immer kürzer, scheint vielleicht doch was mit dem Query Cache zu tun zu haben ?

        Führst du das Script im Browser aus oder per Konsole?
        Das PHP-Skript ist Bestandteil einer Projekt- und Userverwaltung und läuft über Firefox 3 bei mir am lokalen Apache bzw. am 300km entfernten Teamserver unter IIS.
        Der Browser sollte es nicht sein, weil beim Download der fast 200 Dateien von den weltweit verstreuten Datenlieferanten hält er auch die volle Länge durch, d.h. zwischen 10 und 17 Minuten. Abgesehen davon wird nach Abbruch immer noch das Menu angezeigt, nur die vom Skript aufzurufende HTML-Seite nicht mehr.

        @rotkaeppchen:
        Danke gut gemeint, aber ich versuche so weit wie möglich ohne Fremdapplikationen auszukommen. Mir reicht schon der phpmailer den ich brauche, weil die Mailfunktionen von PHP doch etwas unpraktisch sind...
        LG jbs4boinc.at
        ...und all den heimlichen Lauschern widme ich Mozarts Kanons KV 231 und KV 233

        Comment


        • #5
          Ok, hat sich herausgestellt, dass das Problem NICHT von MySQL verursacht wird.
          Für diesen Teil also gelöst
          LG jbs4boinc.at
          ...und all den heimlichen Lauschern widme ich Mozarts Kanons KV 231 und KV 233

          Comment

          Working...
          X