Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][MySQL]Z pliku TXT do bazy (czy da radę?)
Forum PHP.pl > Forum > Przedszkole
roobik
Witam!
Przejdę od razu do rzeczy.
W tabeli mam takie pola:
id, txt1, txt2, txt3, txt4, date
Mam również plik tekstowy, z którego chciałbym "przerzucić" dane (o takiej właśnie strukturze) do tej tabeli. Przykład z pliku tekstowego:
1,trochę,tego,dużo,prawda,17.10.2010
I w ten sposób wyglądają linie w pliku TXT.
Czy istnieje sposób, za pomoca którego wrzucę te dane do tabeli?
Bardzo proszę o pomoc...
Piogola
Cytat(roobik @ 14.02.2011, 00:10:46 ) *
Czy istnieje sposób, za pomoca którego wrzucę te dane do tabeli?

Istnieje taki sposób.
melkorm
Pierwszy link z google
roobik
Cytat(Piogola)
Istnieje taki sposób.

OK... Ale jak? Nie siedzę w php AŻ TAK dobrze sad.gif

//edit
Nie zauważyłem, że pojawiła się jeszcze jedna odpowiedź...
Cytat(melkorm)
Pierwszy link z google

Niestety, ale nie znam zbytnio angielskiego. I (chyba) rczej nie ma tam tego, czego szukam sad.gif
Fifi209
  1. LOAD DATA INFILE 'ścieżka' INTO TABLE


Manual MySQL

Z resztą szukanie nie boli...
http://forum.php.pl/index.php?showtopic=170085&hl=
roobik
Zrobiłem tak:
  1. $sql = 'LOAD DATA LOCAL INFILE "dane.txt" INTO TABLE odp FIELDS TERMINATED BY "," ';
  2. $insertsql = mysql_query($sql);

lecz niestety, nie dodało nic do tabeli sad.gif
Fifi209
Rozumiem, że "dane.txt" jest gdzieś w folderach mysql? Jeżeli nie to podaj PEŁNĄ ŚCIEŻKĘ.
roobik
Plik dane.txt jest na serwerze (w głównym katalogu). Plik z zawartością (powyżej w moim poście) jest również na serwerze w katalogu głównym
Fifi209
Cytat(roobik @ 14.02.2011, 14:33:42 ) *
Plik dane.txt jest na serwerze (w głównym katalogu). Plik z zawartością (powyżej w moim poście) jest również na serwerze w katalogu głównym

No i co z tego, że jest na serwerze?

Jeżeli mysql startuje z powiedzmy /mysql/ a plik masz w ~/dane/dane.txt
To nijak ścieżka "dane.txt" pasuje bo będzie się odwoływała do /mysql/dane.txt zamiast ~/dane/dane.txt
roobik
Nie wiem, czy o to chodzi, ale zrobiłem tak:
  1. $sql = 'LOAD DATA LOCAL INFILE "/_public_html/dane.txt" INTO TABLE odp FIELDS TERMINATED BY "," ';2.$insertsql = mysql_query($sql);

ale dalej nie tego sad.gif
Fifi209
Możesz pokombinować jeszcze z dodaniem LINES TERMINATED BY
a to LOCAL jak dla mnie niepotrzebne
roobik
  1. 1.$sql = 'LOAD DATA INFILE "/_public_html/dane.txt" INTO TABLE odp LINES TERMINATED BY "," ';2.$insertsql = mysql_query($sql);

również nic sad.gif
sada
Tak najprościej bez połączenia z bazą , zmień tylko nazwy pól w zapytaniu

  1. $tekst='1,trochę,tego,dużo,prawda,17.10.2010
  2. 2,trochę,tego,dużo,prawda,18.10.2010
  3. 3,trochę,tego,dużo,prawda,19.10.2010';
  4.  
  5.  
  6.  
  7. $tekst=nl2br($tekst);
  8. $tablica_wierszy=explode('<br />',$tekst);
  9. foreach($tablica_wierszy as $wiersze){
  10. $wyrazy=explode(',',$wiersze);
  11.  
  12.  
  13. $id=$wyrazy[0];
  14. $wyraz1=$wyrazy[1];
  15. $wyraz2=$wyrazy[2];
  16. $wyraz3=$wyrazy[3];
  17. $wyraz4=$wyrazy[4];
  18. $data=$wyrazy[5];
  19.  
  20. echo $id.' '.$wyraz1.' '.$wyraz2.' '.$wyraz3.' '.$wyraz4.' '.$data.'<br />' ;
  21. $sql_scal= "INSERT INTO tabela (ttt1 ttt2 ttt3 ttt4 ttt5 ttt6) VALUES('$id', '$wyraz1', '$wyraz2' ,'$wyraz3' ,'.$wyraz4', '$data')";
  22. }
Fifi209
Co do skryptu - aby wyglądał "ładniej" polecałbym przy:
  1. explode(',', $wiersze);


dodać list

A to nl2br można sobie darować i wpisać \r\n lub \r

Oczywiście nie trzeba pisać o marnej wydajności twojego skryptu. Nawet mały plik ~60MB spowoduje "zabicie" PHP.
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.