Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Dodawanie wielu rekordów z pliku txt
Forum PHP.pl > Forum > Przedszkole
Grah
Witam,
Posiadam dość spory plik txt, który sobie podzieliłem na mniejsze po milion linii każdy.
Każdy plik podzielony wygląda mniej więcej w taki sposób:
Kod
user:pass
user1:pass
...
user999999:pass999999

Teraz muszę wprowadzić te dane do tabel o takiej strukturze:
Nazwa każdej tabeli jest uzależniona od dwóch pierwszych znaków w stringu 'user'
Kod
id | user | pass


Napisałem sobie do tego prostą pętlę:
  1. <?
  2. require_once('./db.php');
  3. $class = new db;
  4. $file = file('./part_17.txt');
  5. $count = count($file);
  6.  
  7.  
  8. for($i=0; $i<$count; $i++)
  9.  
  10. {
  11. $explode = explode(':', $file[$i]);
  12. $md5 = md5(substr($explode[1], 0, -1));
  13. $user = $explode[0];
  14. $tabela = $user[0].$user[1];
  15.  
  16.  
  17.  
  18. $sql_add = "INSERT INTO `$tabela` (`id` ,`user` ,`pass`) VALUES (NULL , '$user', '$md5')";
  19. $result_add = mysql_query($sql_add) or die('error...');
  20. echo $i.'<br />';
  21.  
  22.  
  23. }
  24. ?>

Wszystko ładnie pięknie szło, dopóki nie wprowadzałem część 17 z 32. Za każdym razem, gdy próbuje odpalić tę pętlę baza się rypie i wyskakuje taki błąd:
Kod
Warning: mysql_select_db(): MySQL server has gone away in (...)/db.php on line 12 Warning: mysql_select_db(): Error while reading INIT_DB's OK packet. PID=25867 in (...)/db.php on line 12 Database error


Plik db.php
  1. <?
  2. class db
  3. {
  4.  
  5. function db()
  6. {
  7. $this->host = 'localhost';
  8. $this->database = 'baza';
  9. $this->login = "root";
  10. $this->pass = '';
  11. $this->connect = mysql_connect($this->host, $this->login, $this->pass);
  12. mysql_select_db($this->database);
  13. }
  14. }
  15. ?>


Jakieś rady panowie?
zielu001
Za dużo rekordów na raz i baza się sypie.

usleep może pomoże i po zakończeniu parta użyj mysql_close.

W dodatku radzę użyć pdo albo mysqli bo mysql jest przestarzałe
Grah
dodałem na końcu pętli,
  1. usleep(1000000);

i znów to samo...
zielu001
A zakończyłeś połączenie z bazą? Po pętli mysql_close, bo zawalasz serwer mysql i potem nie chce Ci wybrać bazy. Radzę zresetować serwer MySQL przed próbą..
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.