我有一個MySQL
數據庫中的一堆表,其中一些開始phpbb_ *我想刪除它們。是否有人知道一種方式來做到這一點,而不是做降表 - MySQL的
drop table <tablename>;
每一次
?像一個正則表達式?
drop table phpbb*
或類似的東西?
我有一個MySQL
數據庫中的一堆表,其中一些開始phpbb_ *我想刪除它們。是否有人知道一種方式來做到這一點,而不是做降表 - MySQL的
drop table <tablename>;
每一次
?像一個正則表達式?
drop table phpbb*
或類似的東西?
您可以使用此MySQL的過程:
DELIMITER $$
CREATE PROCEDURE drop_tables_like(pattern VARCHAR(255), db VARCHAR(255))
BEGIN
SELECT @str_sql:=CONCAT('drop table ', GROUP_CONCAT(table_name))
FROM information_schema.tables
WHERE table_schema=db AND table_name LIKE pattern;
PREPARE stmt from @str_sql;
EXECUTE stmt;
DROP prepare stmt;
END$$
DELIMITER ;
對於下降開始以 '' 在 'test1的' 數據庫,您可以運行所有表:
CALL drop_tables_like('a%', 'test1');
只需添加上面的答案,如果在開始該過程之前沒有選擇數據庫,MYSQL將返回一個錯誤ERROR 1046 (3D000): No database selected
。所以在這個陳述use <<db_name>>;
前面加上上面的答案。修改後的解決辦法是:
use <<db_name>>;
DELIMITER $$
CREATE PROCEDURE drop_tables_like(pattern VARCHAR(255), db VARCHAR(255))
BEGIN
SELECT @str_sql:=CONCAT('drop table ', GROUP_CONCAT(table_name))
FROM information_schema.tables
WHERE table_schema=db AND table_name LIKE pattern;
PREPARE stmt from @str_sql;
EXECUTE stmt;
DROP prepare stmt;
END$$
DELIMITER ;
CALL drop_tables_like('a%', '<<db_name>>');
確保您更換<>與數據庫的實際名稱。乾杯!
也許檢查這個職位:http://stackoverflow.com/questions/1589278/sql-deleting-tables-with-prefix –