Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + mysql] import z txt
Forum PHP.pl > Forum > PHP
Babu
A więc tak mam plik tekstowy z wylistowanymi mailami jeden pod drugim, chciałbym
je zaimportować od jednej tabeli:

id - mail

id autoincrament a maile pokolei z listy

dzięki za pomoc
slawek_master
jak z plikiem zrobic to nie wiem, ale moze wrzuc cala liste do explode() ? bedziesz mial w tablicy a poxniej wszystko wrzucisz poprzez petle do bazy:)?
dopy
Będzie pisane bez testów więc bez gwarancji.

  1. <?php
  2. $bHost=""; //host bazy
  3. $bLogin=""; //login bazy
  4. $bHaslo=""; //haslo do bazy
  5. $bBaza="";//nazwa bazy
  6.  
  7. $adresy=file("plik_z_adresami.txt");
  8. $i=0;
  9.  
  10. $db = @mysql_connect($bHost,$bLogin,$bHaslo); 
  11. @mysql_select_db($bBaza);
  12.  
  13. foreach($adresy as $adres) {
  14. mysql_query("INSERT INTO adresy VALUES('$i','".trim($adres)."') "); //przypadek gdy najpierw jest pole z id, pozniej z adresem
  15. $i++;
  16. }
  17.  
  18. ?>


Powinno działać, jednak tak jak mówie - pisane na szybko bez testu.
slawek_master
przy trim nie powinno byc


  1. <?php
  2. trim($adres, " t.");
  3. ?>

questionmark.gif
dopy
Nie koniecznie, niech sobie trim wywali co mu tam nie będzie odpowiadać winksmiley.jpg A no i niestety przy bardzo dużych bazach (zalezy od konfiguracji serwera) skrypt może sobie nie dać rady z załadowaniem przez file() całej bazy do pamięci podręcznej, ale to tak średnio przy bazach większych niż 500 tyś wpisów (ale to bardzo różnie).
Babu
działa dziękuje winksmiley.jpg

a jeśli bym chciał wyciągnąć z bazy maile do txt?
phpion
Przeciez to obciazy silnik bazy jak cholera; wykonywanie zapytan SQL w petli...
  1. <?php
  2. foreach($adresy as $adres)
  3. {
  4. mysql_query("INSERT INTO adresy VALUES('$i','".trim($adres)."') "); //przypadek gdy najpierw jest pole z id, pozniej z adresem
  5. $i++;
  6. }?>

Mozna to 1 zapytaniu!
  1. <?php
  2. $arrayTemp[] = Array();
  3.  
  4. foreach($adresy as $adres)
  5. $arrayTemp[] = "('".chop(trim($adres))."')";
  6.  
  7. $q = "INSERT INTO adresy (adres) VALUES ".implode(", ", $arrayTemp);
  8. $q = mysql_query($q);
  9. ?>

tak bedzie duzo wydajniej!
A zrzut danych z bazy do pliku mniej-wiecej tak:
  1. <?php
  2. $nazwa_pliku = "plik.txt";
  3. $arrayTemp = Array();
  4.  
  5. $q = "SELECT adres FROM adresy";
  6. $q = mysql_query($q);
  7.  
  8. if (mysql_num_rows($q) > 0)
  9. while ($r = mysql_fetch_row($q))
  10. $arrayTemp[] = $r[0];
  11.  
  12. $file = fopen($nazwa_pliku, "w+");
  13. flock($file, LOCK_EX);
  14. fputs($file, implode("rn", $arrayTemp));
  15. flock($file, LOCK_UN);
  16. fclose($file);
  17. ?>

Pozdrawiam
Babu
wrzut do bazy jest jednorazowy tak samo ze zrzutem więc nie musi być wydajnie jak na ten 1 raz
zaraz sprawdze zrzut
dopy
Cytat
Przeciez to obciazy silnik bazy jak cholera; wykonywanie zapytan SQL w petli...


Masz racje, jednak nie zastanawialem sie nad wydajnoscia piszac cos 'na sucho' do jednokrotnego użycia winksmiley.jpg

Pozdrawiam.
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.