Witam
Mam plik xml np 100 MB chcę z niego importować dane do MySQL, mój problem polega na zbyt długim wykonywaniu zadania za pomocą SimpleXML. Piszę do was o pomoc ale trochę inna czy napisał by ktoś (doświadczony), jak on by to wykonał w w pkt 1,2,3, gdyby musiał z tak dużego pliku zrobić import danych. Ja mam ze 1.wczytuje plik, potem 2. w pętli foreach mam zapytanie do 3. mysql INSERT INTO, i na tym koniec. Czas nie zadowala.
Ogólnie chodzi mi o to jakby ktoś zrobił dany importer
(nie chodzi mi o gotowce, linki do gotowców, tylko w pkt napisane co by robił od początku pliku aż po jego koniec).
Pozdrawiam
Możesz użyć parsera strumieniowego, klasa XMLReader. On nie wczytuje całego pliku do pamięci, więc z zasady powinien szybszy. Przykłady znajdziesz bez problemu.
Dziękuję ci kolego już się zabrałem do czytania, i powiem że znacznie przyspieszyło :)
Innym problemem może być ilość zapytań. Z Twojego opisu wynika, że robisz tyle insertów ile masz elementów w XMLu.
W miarę możliwości należy łączyć inserty w większe paczki, czyli w foreachu budujesz duże zapytanie i jak zliczysz, że np. masz 30 000 elementów w insercie, to wtedy wykonujesz zapytanie.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.