Oldal: 1 / 2 12 UtolsóUtolsó
Eredmény: 1 - 10 (11) összesen

Téma: MySQL táblák törlése

  1. #1
    Mentor Feriman logója
    Csatlakozott
    09-10-11
    Hely
    Magyarország
    Hozzászólás
    465
    Begyűjtött 4 köszönetet
    4 hozzászólásával

    Kérdés MySQL táblák törlése

    Adott egy ~19000 táblából álló MySQL adatbázis. Ebben van egy rakás felesleges tábla, amit törölni szeretnék. Mindegyik nevében benne van az "sf" betűkombináció. Ilyen táblákból kb. 6-7ezer darab van.

    Hogyan törölhetném az összes "sf" nevű táblát egyszerre?



  2. #2
    Bölcs benedictus logója
    Csatlakozott
    10-04-23
    Hozzászólás
    1.574
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Alapbeállítás re: MySQL táblák törlése

    talán ez segít:
    htt_://forums.devshed.com/mysql-help-4/drop-multiple-tables-based-on-table-name-458023.html#post1849907



  3. #3
    Mentor Feriman logója
    Csatlakozott
    09-10-11
    Hely
    Magyarország
    Hozzászólás
    465
    Begyűjtött 4 köszönetet
    4 hozzászólásával

    Alapbeállítás re: MySQL táblák törlése

    Ez működhet?

    DROP TABLE "%sf%"

    phpMyAdmin-ban lefuttatva.



  4. #4
    Törzsvendég
    Csatlakozott
    10-07-09
    Hozzászólás
    106
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: MySQL táblák törlése

    Előbb mindenről biztonsági mentés, és csak utána próbálj ki parancsokat phpmyadminban



  5. #5
    Bölcs
    Csatlakozott
    09-08-20
    Hozzászólás
    524
    Begyűjtött 47 köszönetet
    39 hozzászólásával

    Alapbeállítás re: MySQL táblák törlése

    Nem, mert a % csak LIKE-nál működik.
    DROP TABLE (SHOW TABLES LIKE '%sf%');

    ez már talán.

    De vigyázz, ha a nem törlendőbe is van sf, akkor azt is letörlöd.


    Utoljára módosítva: gzoli által : 2010-09-12 17:27

  6. #6
    Szerkesztő Tyborrex logója
    Csatlakozott
    08-07-16
    Hozzászólás
    265
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: MySQL táblák törlése

    Idézet gzoli eredeti hozzászólása Hozzászólás megtekintése

    De vigyázz, ha a nem törlendőbe is van sf, akkor azt is letörlöd.
    Bizony, ez így nem lesz jó!
    Mert olyat is törölni fogsz, amit ne akarsz!
    Az sf-ek nem a legelején vannak prefixként véletlenül a tábláknak, mert akkor könnyebb a %! Mondjuk én php preg match-eket írtam eddig, de gondolom mysql is valami hasonló syntax!



  7. #7
    Mentor Feriman logója
    Csatlakozott
    09-10-11
    Hely
    Magyarország
    Hozzászólás
    465
    Begyűjtött 4 köszönetet
    4 hozzászólásával

    Alapbeállítás re: MySQL táblák törlése

    Idézet gzoli eredeti hozzászólása Hozzászólás megtekintése
    Nem, mert a % csak LIKE-nál működik.
    DROP TABLE (SHOW TABLES LIKE '%sf%');

    ez már talán.
    Hibát ad:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SHOW TABLES LIKE '%sf%')' at line 1

    Tyborrex: A táblanevek közepén van mindig az sf.



  8. #8
    Hekker 0xFF logója
    Csatlakozott
    09-08-21
    Hozzászólás
    1.079
    Begyűjtött 168 köszönetet
    118 hozzászólásával

    Alapbeállítás re: MySQL táblák törlése

    Az alap valami ilyesmi lenne
    SELECT concat('DROP TABLE IF EXISTS ',table_name,';') as torol
    FROM information_schema.tables WHERE table_schema = 'ADATBAZIS' AND table_name LIKE '%sf%'

    Itt hasznalhatsz REGEXP et is vagy LENGTH, MID stb
    Pl ha az sf mindig 4. akkor AND substring(table_name,3,5)='sf'

    Majd a kapott eredmenyt futtatod, vagy simma SQL ben phpmyadminban vagy PHP.

    itt a PHP verzio:
    PHP kód:
    <?php
    mysql_connect
    ('localhost','USER','PASS');
    $db 'ADATBAZIS'//ahol a tablak vannak
    $sql "SELECT table_name as torol FROM information_schema.tables 
                WHERE table_schema = '
    $db' AND table_name LIKE '%sf%'";
    $res mysql_query($sql); if (!$res) { die("$sql <br><br> mysql_errno() : mysql_error()"); }

    while (
    $row mysql_fetch_array($res)){
        
    $query "DROP TABLE IF EXISTS `$db`,`{$row['torol']}`";
        
    mysql_query($query);
        echo 
    $row['torol'] . '<br />';    
        }
    mysql_close();
    ?>




  9. #9
    Mentor Feriman logója
    Csatlakozott
    09-10-11
    Hely
    Magyarország
    Hozzászólás
    465
    Begyűjtött 4 köszönetet
    4 hozzászólásával

    Alapbeállítás re: MySQL táblák törlése

    Idézet KForum eredeti hozzászólása Hozzászólás megtekintése
    itt a PHP verzio:
    Ez kilistázza a törlendő táblákat ( egy részét ), de nem törli őket...



  10. #10
    Hekker 0xFF logója
    Csatlakozott
    09-08-21
    Hozzászólás
    1.079
    Begyűjtött 168 köszönetet
    118 hozzászólásával

    Alapbeállítás re: MySQL táblák törlése

    DROP TABLE IF EXISTS `$db`,`{$row['torol']}`";
    cseréld le erre
    DROP TABLE IF EXISTS `$db`.`{$row['torol']}`";

    Pont kell nem vessző, bocs.



Oldal: 1 / 2 12 UtolsóUtolsó

A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •