Mit PHP Daten auf XML in Datenbank überführen

oeko

Mitglied
Hallo,

leider stehe ich wie ein Ochs vorm Berg und möchte mich nun mit einem Problem an Euch wenden. Leider habe ich bisher kein passende Tutorials oder andere, für mich passenden Hilfen gefunden.

Ich habe bisher Shopdaten als CSV-Datei erhalten und mit Hilfe von PHP in meine DB integriert. Ein neues Projekt erfordert es allerdings, dass eine ca. 1,5 GB (!) große XML Datei ausgewertet wird und die Daten in die DB übertragen werden. Zur XML Datei gibt es eine enstprechende Datei mit einem zugehörigen XSD-Schema.

Meine ersten XML Gehversuche mit einigen XML-Testdatensätzen in Verbindung mit PHP (simpleXML) waren erfolgreich und die Daten konnten in die DB integriert werden. Die schiere Größe der Datei zwingt meinen Rechner allerdings in meiner Testumgebung in die Knie. Womöglich liegt dies auch einfach an der falschen Herangehensweise, da XML absolutes Neuland für nich ist. Daher meine konkrete Frage:

Womit lässt sich eine große, komplexe XML-Datei am Besten auswerten, um Daten, die bestimmten Kriterien entsprechen, in einer DB zu übernehmen ? Ist simpleXML der richtige Weg oder muss z.B. auf Java (z.B.SAX) ausgewichen werden?

Vielleicht habt Ihr den einen oder anderen Tipp, vielleicht auch Link zu einem entsprechenden Tutorial oder weiterführenden Infos.

Viele Grüße
oeko
 
Ich würde schätzen, dass die größer der Datei einfach dazu führt, dass die maximal Ausführungszeit deines PHP-Scriptes überschritten wird.
Ist es so, kannst du diese einfach erhöhen oder jedesmal wenn dein Script abbricht (die Fehlermeldung kennst du ja) per JavaScript die Seite neu Laden und am Abbruchpunkt weitermachen (irgentwie speichern wo man war)

Mit simpleXML hab ich mich bisher noch nicht auseinandergesetzt. Kann dir dazu also leider nichts sagen :-(
 
Hi,

ich hatte ebenfalls ein solches Problem.
Ich habe es folgendermaßen gelöst:

1) time_limit meines Servers hochgestellt
2) Die XML-Datei mittels xml2csv in iene CSV-Datei konvertiert (http://www.download25.com/install/a7soft-xml2csv.html )
3) Die CSV-Datei ausgelesen und die Daten verarbeitet.

So hat es bei mir funktioniert. Vorher hatte ich es mit SimpleXML probiert - da wirst aber bei großen XML-Dateien nicht glücklich mit.

Probiers mal mit dem XML2CSV.

Grüße,

maeg
 
Hallo,

danke für die bisherigen Antworten.

@maeg
Wenn meine Recherchen stimmen, dann ist XML2CSV ein Tool für den PC. Eigentlich wäre das eine feine Sache und ich könnte mit meinem bestehenden KnowHow weiterkommen, allerdings muss das Update der Produktdatenbank täglich automatisiert auf dem Server erfolgen.

@CookieBuster
Das ist gut möglich. Allerdings zwinge ich meinen PC in der PHP-Testumgebung in die Knie. Zur Ausgabe von Fehlermeldungen kommt es da nicht mehr.

@spanner
Das muss ich mal prüfen, ob das gehen würde.
 
Zurück