Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie do bazy z pliku tekstowego
Forum PHP.pl > Forum > PHP
PawelC
Mam takie pytanie, mam plik tekstowy w którym mam np. 10tys cytatów jeden pod drugim i chciałbym je dodać do bazy danych, oczywiście pomijająć ręczne dodawanie tego. Czy jest na to jakiś sposób, jeżeli tak to prosiłbym o jakieś wskazówki jak to wykonać?
strife
http://dev.mysql.com/doc/refman/5.0/en/load-data.html

Albo wczytanie pliku i w pętli dodawanie wpisów do bazy, można zrobić, że będzie dodawał co 100 i przerwa na 3 sekundy, żeby bazy nie zabiło. Przeszukaj manuala, http://pl.php.net/manual/pl/ref.filesystem.php.

Pozdrawiam.
jarrod
najprościej:
  1. <?php
  2. $tresc = array( );
  3. $tresc = file('plik_z_trescia.txt');
  4.  
  5. foreach( $tresc as $cytat )
  6. {
  7.  $sql = "INSERT INTO `baza`.`tabela` ( `id`,`cyctat` ) VALUES ( null,'{$cytat}' )";
  8.  mysql_query( $sql );
  9. }
  10. ?>
Babcia@Stefa
Cytat(jarrod @ 14.10.2007, 14:32:01 ) *
najprościej:
  1. <?php
  2. $tresc = array( );
  3. $tresc = file('plik_z_trescia.txt');
  4.  
  5. foreach( $tresc as $cytat )
  6. {
  7.  $sql = "INSERT INTO `baza`.`tabela` ( `id`,`cyctat` ) VALUES ( null,'{$cytat}' )";
  8.  mysql_query( $sql );
  9. }
  10. ?>


Jeszcze dodam że za pomocą funkcji sleep()" title="Zobacz w manualu PHP" target="_manual, i chyba usleep()" title="Zobacz w manualu PHP" target="_manual możesz ,,uśpić" parser php na wybrany czas (to jest ta przerwa czasowa dla ciebię :])

Dziękuję, Babcia@Stefa
PawelC
Kod
<?php
$tresc = array( );
$tresc = file('plik_z_trescia.txt');

foreach( $tresc as $cytat )
{
     $sql = "INSERT INTO `baza`.`tabela` ( `id`,`cyctat` ) VALUES ( null,'{$cytat}' )";
     mysql_query( $sql );
sleep(2);
}
?>

czyli mogę to zrobić tak jak napisałem powyżej z opcją sleep
franki01
ODRADZAM! To zapcha baze danych 10 tysiacami zapytan!

Chyba lepsze rozwiazanie:

  1. <?php
  2. $tresc = array( );
  3. $tresc = file('plik_z_trescia.txt');
  4.  
  5. $query = '';
  6.  
  7. $i = 0;
  8. $max = count($tresc) - 1;
  9. foreach($tresc as $cytat) {
  10. $query .= ",(null, '".$cytat."')";
  11. if(strlen($query) > 5000 || $i == $max) {
  12. mysql_query("INSERT INTO tabela(id,cytat) VALUES".substr($query,1));
  13. $query = '';
  14. }
  15. $i++;
  16. }
  17. ?>


Pisalem z palca, wiec jak bede jakies literowki to pisac smile.gif Ten sposob zdecydowanie odciazy baze danych.
PawelC
Dzięki wszystkim za pomoc, działa tyle że mam dosyć dużo rekordów w pliku i muszę je podzielic na kilka plików tekstowych inaczej niedoda do bazy bo będzie "server timeout"
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.