Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php + mysql] import z txt
Babu
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 16.06.2006

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


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
Go to the top of the page
+Quote Post
slawek_master
post
Post #2





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 4.01.2006

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


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:)?

Ten post edytował slawek_master 20.08.2006, 13:29:09
Go to the top of the page
+Quote Post
dopy
post
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 25.07.2005

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


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.
Go to the top of the page
+Quote Post
slawek_master
post
Post #4





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 4.01.2006

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


przy trim nie powinno byc


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

(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
dopy
post
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 25.07.2005

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


Nie koniecznie, niech sobie trim wywali co mu tam nie będzie odpowiadać (IMG:http://forum.php.pl/style_emoticons/default/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).

Ten post edytował dopy 20.08.2006, 13:45:06
Go to the top of the page
+Quote Post
Babu
post
Post #6





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 16.06.2006

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


działa dziękuje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

a jeśli bym chciał wyciągnąć z bazy maile do txt?

Ten post edytował Babu 20.08.2006, 17:06:33
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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

Ten post edytował phpion.com 20.08.2006, 17:28:47
Go to the top of the page
+Quote Post
Babu
post
Post #8





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 16.06.2006

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


wrzut do bazy jest jednorazowy tak samo ze zrzutem więc nie musi być wydajnie jak na ten 1 raz
zaraz sprawdze zrzut

Ten post edytował Babu 20.08.2006, 17:44:47
Go to the top of the page
+Quote Post
dopy
post
Post #9





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 25.07.2005

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


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdrawiam.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:52