Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obsługa 130MB pliku .csv
Juzek
post 27.10.2010, 09:16:31
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.08.2007

Ostrzeżenie: (0%)
-----


Witam.
Otrzymałem 130MB plik .csv z zadaniem zaimportowania go do bazy MYSQL.

Problem w tym, że funkcje file, oraz file_get_contents odczytują cały plik co wywołuje zwrócenie błędu o przekroczeniu pamięci. Ustawienie w php.ini memory_limit na wartość graniczną stabilnej pracy serwera - też nie pomaga.

Rozwiązaniem problemu była by funkcja która w parametrach przyjmuje linie "od - do", której ma czytać plik. Coś jak SQL LIMIT .


(by nie tworzyć drugiego tematu):
Znacie jakieś programy, które radzą sobie z tak dużymi plikami na XP/7/Ubuntu ?
Próbowałem Wordem, Exelem, VIM'em, Geditem i openofficem - wszystkie albo się przywieszały (na windach) lub były killowane na Ubuntu.

Dziękuję z góry za rady.
Pozdrawiam i wracam na Google.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
wookieb
post 27.10.2010, 09:19:03
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




1) fopen + fread (nie fgetcsv bo źle działa na utf) - przy złych wiatrach ta kombinacja tez może sie wysypać.
2) zaimportować bezpośrednio do mysql (google -> mysql csv import)

Ten post edytował wookieb 27.10.2010, 09:19:34


--------------------
Go to the top of the page
+Quote Post
Juzek
post 27.10.2010, 10:04:26
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.08.2007

Ostrzeżenie: (0%)
-----


1) sprawdzę
2) plik .csv nie zawiera informacji o tym do jakiej bazy/tabeli/kolumny ma wrzucić więc wątpię czy to się uda.

[EDIT]

Udało mi się w ten sposób:
- przerzuciłem plik na silniejszy serwer gdzie skrypt dorobił zapytanie
- wygenerował plik zapytania .sql ~500MB
- zaimportowałem plik .sql w konsoli

Pozdrawiam.

Ten post edytował Juzek 27.10.2010, 12:58:29
Go to the top of the page
+Quote Post
erix
post 27.10.2010, 14:40:43
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Na phpclasses była kiedyś klasa do strumieniowego czytania plików CSV. Radziła sobie z tym zadaniem doskonale, ale linka nie jestem w stanie podać, bo nie pamiętam. [;

Gdzieś w archiwum to mam, ale skoro już sobie poradziłeś... [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:40