MySQL: how to drop multiple tables using single query?

前端 未结 7 1248
说谎
说谎 2020-12-15 09:13

I want to drop multiple tables with ease without actually listing the table names in the drop query and the tables to be deleted have prefix say \'wp_\'

相关标签:
7条回答
  • 2020-12-15 09:51

    Just sharing one of the solutions:

    mysql> SELECT CONCAT( "DROP TABLE ",
    GROUP_CONCAT(TABLE_NAME) ) AS stmt

    FROM information_schema.TABLES

    WHERE TABLE_SCHEMA = "your_db_name" AND TABLE_NAME LIKE "ur condition" into outfile '/tmp/a.txt';

    mysql> source /tmp/a.txt;

    0 讨论(0)
  • 2020-12-15 09:58

    For the great mysqldump solution it's better to use the option --skip-quote-names

    mysqldump --skip-quote-names -u user -p database > dump.sql 
    grep "DROP TABLE wp_" dump.sql > drop.sql
    mysql -u user -p database < drop.sql
    

    You get rid of backticks in table names. The grep part won't work in some enviroments with the backticks.

    0 讨论(0)
  • 2020-12-15 10:00

    Be careful with "_", need to be written with "\" before in Mysql like:

    SELECT CONCAT('DROP TABLE',GROUP_CONCAT(CONCAT(table_schema,'.',table_name)),';') INTO @dropcmd FROM information_schema.tables WHERE table_schema='databasename' AND table_name LIKE '**my\\_table**%';
    
    0 讨论(0)
  • 2020-12-15 10:02

    I've used a query very similar to Angelin's. In case you have more than a few tables, one has to increase the max length of group_concat. Otherwise the query will barf on the truncated string that group_concat returns.

    This is my 10 cents:

    -- Increase memory to avoid truncating string, adjust according to your needs
    SET group_concat_max_len = 1024 * 1024 * 10;
    -- Generate drop command and assign to variable
    SELECT CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(table_schema,'.',table_name)),';') INTO @dropcmd FROM information_schema.tables WHERE table_schema='databasename' AND table_name LIKE 'my_table%';
    -- Drop tables
    PREPARE str FROM @dropcmd; EXECUTE str; DEALLOCATE PREPARE str;
    
    0 讨论(0)
  • 2020-12-15 10:04

    Dropping single table in mysql:

    DROP TABLE TABLE_NAME;

    0 讨论(0)
  • 2020-12-15 10:06

    Go to c:\xampp\mysql\data\your folder

    Select multiple tables that you want remove and then press delete button

    Thanks

    0 讨论(0)
提交回复
热议问题