XML Datei importieren

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

  • XML Datei importieren

    Hallo zusammen,

    ich sitze hier gerade an einem Problem an dem ich nicht weiterkomme:

    Es soll eine XML-Datei in die Datenbank importiert werden. Die Datei enthält ca. 100.000 Artikel und hat so ca. 30 MB.

    Mit simplexml klappt das auch alles, nur habe ich ein Performance-Problem:
    Beim sequentiellen Abarbeiten laufen in 5 Minuten ca. 5.000 Artikel durch.
    Beim Importieren mit "load data infile" schaffe ich knapp 16.000.
    Wenn ich den Upload des Files und den eigentlichen Import trenne schaffe ich etwas mehr als 20.000.

    An meine 100.000 Datensätze komme ich so nicht wirklich ran. Wo denkt Ihr, sollte ich weiter forschen:

    - SQL-server statt mysql 5?
    - irgendeine andere Idee?

    Entwicklungsumgebung:
    PHP5/mySQL 5.0/Windows XP/Apache 2. Die Maschine hat 2.6 GHz und 1,5 GB RAM. Es läuft ausschließlich die Applikation darauf.

    Danke im Voraus für Denkanstöße,
    Mario

  • #2
    Ich machs meist so:
    - in einer Shell ein PHP-Script starten, dass aus dem XML ein SQL-File macht
    - SQL-Datei mit dem Kommandozeilenclient in die DB pumpen (mysql ... < data.sql)

    Kommentar


    • #3
      Ich weiß jetzt natürlich nicht, inwiefern das in Deinem Fall möglich ist, was ich jetzt schreibe, aber vielleicht kannst Du auch die Daten aus der XML-Datei so aufsplitten, dass Du mehrere XML-Files erhälst, die Du auf eine der von Dir getesteten Möglichkeiten in die Datenbank importieren kannst.


      Ich habe dann aber auch noch eine Frage an @onemorenerd:
      Hast Du eventuell so ein Shell-Skript mal bei der Hand?

      Ich wüsste nämlich nicht, wie man so etwas umsetzt.
      Danke .

      Grüße, Ben.


      [EDIT]
      lol .. erst lesen, dann fragen. Sorry .. meine Frage ist natürlich unnötig. Musste nur mal meine Hirnzellen ankurbeln.
      Java, PHP, (X)HTML, CSS, XML, Linux, Webserver, ... uvm.

      Kommentar


      • #4
        Hallo,

        erstmal danke für die Antworten.

        @onemorenerd:
        Habe ich auch schon überlegt. Zur Zeit ist das (allerdings auf J2EE-Plattform) genau so mit einem Nachtjob realisiert. Wenn ich keine Möglichkeit finde, das ganze zur Laufzeit zu lösen, wäre das wohl meine Wahl.

        @BenOmania:
        Das würde die Kundschaft wohl nicht mitspielen. Das würde bedeuten, dass der User quasi das Script mehrmals manuell starten müßte um die einzelnen Teile einzulesen...


        Gruß
        Mario

        Kommentar


        • #5
          Original geschrieben von Mario00001
          Das würde die Kundschaft wohl nicht mitspielen.
          Ah, ich dachte, dass das nur ein einmaliges Problem ist.

          Dann hat sich das natürlich erledigt!
          Java, PHP, (X)HTML, CSS, XML, Linux, Webserver, ... uvm.

          Kommentar


          • #6
            ich glaube das wäre garkein so großes problem:
            das aufsplitten kann ja ein script übernehmen - die frage ist halt nur wer lust hat 30mb hochzuladen und ob das so überhaupt geht ....
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar

            Lädt...
            X