Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mySql] Kasowanie tabel z prefixem
Forum PHP.pl > Forum > PHP
dopy
Witam,

Czy język mySQL pozwala na usunięcie z bazy wszystkich tabel z danym prefixem ? Chodzi o coś a'la DROP TABLE prefix_% 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.
nospor
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

smile.gif
dr_bonzo
  1. SHOW TABLES LIKE "prefix_%"

nie znalazlem czy da sei polaczyc ten wynik ", " i wrzucic do DROPa.
dopy
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 ?
nospor
sprawdź 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 smile.gif
dopy
  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 winksmiley.jpg Zobaczymy jak sobie poradzi z dużymi bazami winksmiley.jpg To co zwraca to oczywiście ilość usuniętych tabel smile.gif

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.