Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Przenoszenie zawartości pliku do bazy danych
Forum PHP.pl > Forum > Przedszkole
d0m1n1k_
Witam,
w pliku MAA00.txt posiadam zbiór wyrażeń (pojedyncze słowa).
Plik ma strunkturę wyraz[następna linijka]wyraz...
Chciałbym przenieść jego zawartość do prostej tabeli [megaList] MySQL [mL_id, mL_wrds]
Plik jest ciężki - waży prawie 25MB, więc ręczne wprowadzanie nie wchodzi w grę.

  1. <?php
  2. //START :: SQLConnect
  3.  
  4. $cfg['db_server'] = 'localhost';
  5. $cfg['db_user'] = '****';
  6. $cfg['db_pass'] = '****';
  7. $cfg['db_name'] = '****';
  8.  
  9.  
  10. // POŁĄCZ Z BAZĄ DANYCH
  11. $connection = @mysql_connect ($cfg['db_server'], $cfg['db_user'], $cfg['db_pass']);
  12. $select = @mysql_select_db ($cfg['db_name'], $connection);
  13.  
  14. $plik = file('MAA00.txt'); //Nie mały 25MB+ plik do wysłania do bazy danych
  15.  
  16. $i = "0";
  17. foreach($plik as $linia)
  18. {
  19. $i++;
  20. list($wiek) = explode('\n', trim($linia));
  21. echo "$wiek<br />";
  22. $wynik = mysql_query("INSERT INTO megaList SET mL_wrds = '$wiek2");
  23. if (!$wynik) echo "Błąd w linii $i ".mysql_error()." <br />";
  24. }
  25.  
  26. ?>


Dla jasności - echo jest tylko dla mojej zachcianki, po to abym widział czy idzie czy nie ;-)
Problemem jest to, że nie chce zaskoczyć.
Niby popracuje na serwerze... i koniec.
Nie chce wrzucić danych do bazy.

Z góry dziękuję za pomoc.
SmokAnalog
Nie lepiej wrzucić to z użyciem klienta MySQL, chociażby phpMyAdmin? One przyjmują nawet skompresowane pliki, więc powinno pójść gładko.
by_ikar
Może wywalać ci out of memory, może to też być time limit (bo nie widzę żeby gdzieś był ustawiony). A najbardziej prawdopodobny jest właśnie limit czasu. Dodaj sobie na początku skryptu:



No i włącz raportowanie błędów, nie wyciszaj funkcji etc. Jak chcesz coś debugować i szukać błędu, to przedewszystkim nie rzucaj sobie kłód pod nogi..
webdice
Brakuje Ci apostrofu w 22 linii.
d0m1n1k_
@by_ikar napisałeś o limitach - za co dziękuję - i mnie tknęło =D
Wszedłem sobie na CMD_SHOW_LOG a tam pisze - a raczej wali w oczy - że przekroczyłem limity zapytań (200.000) haha.gif

Czy jeśli użyję phpmyadmin, to te limity zostaną ominięte?
by_ikar
PhpMyadmin tak samo korzysta z php jak ty, wiec jeżeli masz jakoś odgórnie narzucone limity, jedyny sposób żeby to przeskoczyć jest zliczanie rekordów, następnie sleep() na kilkanaście sekund, i kontynuowanie. Oczywiście nie wiem na ile sekund wywołać sleep() dlatego musisz popróbować.
SmokAnalog
by_ikar, niekoniecznie. Limit zapytań nie ma związku z PHP, to limit narzucony przez samą bazę. Klienty (broń Boże nie klienci) baz danych niekiedy grupują dane, żeby wrzucić wiele rekordów w jednym zapytaniu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.