Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dodawanie do bazy z pliku tekstowego
PawelC
post 14.10.2007, 13:59:21
Post #1





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
strife
post 14.10.2007, 15:07:27
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


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.


--------------------
Go to the top of the page
+Quote Post
jarrod
post 14.10.2007, 15:32:01
Post #3





Grupa: Zarejestrowani
Postów: 312
Pomógł: 9
Dołączył: 14.10.2006
Skąd: warszawa

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


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. ?>
Go to the top of the page
+Quote Post
Babcia@Stefa
post 14.10.2007, 16:06:35
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


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


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
PawelC
post 14.10.2007, 17:05:46
Post #5





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


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

Ten post edytował ExPlOiT 14.10.2007, 17:06:07
Go to the top of the page
+Quote Post
franki01
post 14.10.2007, 20:03:21
Post #6





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


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.

Ten post edytował franki01 14.10.2007, 20:04:24
Go to the top of the page
+Quote Post
PawelC
post 14.10.2007, 21:53:53
Post #7





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


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"
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 - 08:50