Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Przenoszenie zawartości pliku do bazy danych, pętla foreach
d0m1n1k_
post 30.07.2014, 18:54:37
Post #1





Grupa: Zarejestrowani
Postów: 208
Pomógł: 3
Dołączył: 13.07.2009
Skąd: Tarnów

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


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.

Ten post edytował d0m1n1k_ 30.07.2014, 19:04:21


--------------------
Prywatna koncepcja pasji - SprawdzAuto.info
Go to the top of the page
+Quote Post
SmokAnalog
post 30.07.2014, 19:15:54
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Nie lepiej wrzucić to z użyciem klienta MySQL, chociażby phpMyAdmin? One przyjmują nawet skompresowane pliki, więc powinno pójść gładko.
Go to the top of the page
+Quote Post
by_ikar
post 30.07.2014, 20:36:06
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


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..
Go to the top of the page
+Quote Post
webdice
post 30.07.2014, 20:52:51
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Brakuje Ci apostrofu w 22 linii.
Go to the top of the page
+Quote Post
d0m1n1k_
post 31.07.2014, 06:50:52
Post #5





Grupa: Zarejestrowani
Postów: 208
Pomógł: 3
Dołączył: 13.07.2009
Skąd: Tarnów

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


@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?


--------------------
Prywatna koncepcja pasji - SprawdzAuto.info
Go to the top of the page
+Quote Post
by_ikar
post 31.07.2014, 10:31:18
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


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ć.
Go to the top of the page
+Quote Post
SmokAnalog
post 31.07.2014, 10:35:00
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


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.
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: 26.04.2024 - 10:03