Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mySql] Kasowanie tabel z prefixem, masowo :)
dopy
post
Post #1





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

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


Witam,

Czy język mySQL pozwala na usunięcie z bazy wszystkich tabel z danym prefixem ? Chodzi o coś a'la DROP TABLE prefix_% (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Patrzyłem w manual mySQL jednak jakoś nie lubie tego manuala i ciężko szuka mi się tam informacji. Jeśli jednak język sql nie oferuje takiego cuda to w jaki sposób byście to rozwiązali ? Przyjmijmy że nie wiem jakie są tabele, znam tylko prefix - wtedy wyszukiwać tabele, wrzucać do tablicy i kolejno DROP'ować ? Ale przy takim postępowaniu, duża ilość tabel = masa zapytań do sql.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ale przy takim postępowaniu, duża ilość tabel = masa zapytań do sql.
hmmm, no to policzmy:

Cytat
wtedy wyszukiwać tabele

= 1 zapytanie

Cytat
kolejno DROP'ować
drop table umozliwia wpisanie kilku tabel do zapytania
= 1 zapytanie

wynik calkowity:
= 2 zapytania do bazy

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





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


  1. SHOW TABLES LIKE "prefix_%"

nie znalazlem czy da sei polaczyc ten wynik ", " i wrzucic do DROPa.
Go to the top of the page
+Quote Post
dopy
post
Post #4





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

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


Yhym, ok, a ile max uciągnie tabel do usunięcia za jednym razem ? Powiedzmy jak dam mu 1000 tabel po przecinku, to nie będzie robił mi problemów ?
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




sprawdź (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Mysql ma jakies ograniczenie na dlugosc zapytania, ale jaka to dlugosc to nie wiem.
Jesli to bedzie naprawde wiele tabel, to porcjuj je, np. co 250 tabel. Bedziesz mial wowczas 4 + 1 = 5 zapytan (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
dopy
post
Post #6





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

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


  1. <?php
  2. function usun_tabele_pref($prefix) {
  3. $usun=array(); $ile=0;
  4. $xx=mysql_query('show tables like "'.$prefix.'_%"');
  5. while($xxx = mysql_fetch_array($xx)) {
  6. $usun[]=$xxx[0]; $ile++;
  7. }
  8. $tabele=implode(", ",$usun);
  9. mysql_query("DROP TABLE ".$tabele);
  10. return $ile;
  11. }
  12. ?>


Taka mała funkcja dla leniwych (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Zobaczymy jak sobie poradzi z dużymi bazami (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) To co zwraca to oczywiście ilość usuniętych tabel (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

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: 23.08.2025 - 11:13