-- ============================================================================= -- 只清空表里的数据,不删表、不改表结构(DELETE FROM,不是 DROP / TRUNCATE) -- 1) fake_simple_admin:表名以前缀开头 -- t_order / c_ / t_pickup / t_recharge / t_customer -- t_coupon / t_member / t_referral / t_sales / t_service -- 2) track_center:表名以 t_order 开头 -- 请在 Navicat / DBeaver / MySQL Workbench 里整段执行(需要 DELIMITER)。 -- ============================================================================= -- 执行前先看将要清空的表 SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND ( ( TABLE_SCHEMA = 'fake_simple_admin' AND ( TABLE_NAME LIKE 't\_order%' OR TABLE_NAME LIKE 'c\_%' OR TABLE_NAME LIKE 't\_pickup%' OR TABLE_NAME LIKE 't\_recharge%' OR TABLE_NAME LIKE 't\_customer%' OR TABLE_NAME LIKE 't\_coupon%' OR TABLE_NAME LIKE 't\_member%' OR TABLE_NAME LIKE 't\_referral%' OR TABLE_NAME LIKE 't\_sales%' OR TABLE_NAME LIKE 't\_service%' ) ) OR ( TABLE_SCHEMA = 'track_center' AND TABLE_NAME LIKE 't\_order%' ) ) ORDER BY TABLE_SCHEMA, TABLE_NAME; DELIMITER $$ DROP PROCEDURE IF EXISTS `fake_simple_admin`.`sp_clear_biz_tables`$$ CREATE PROCEDURE `fake_simple_admin`.`sp_clear_biz_tables`() BEGIN DECLARE v_done INT DEFAULT 0; DECLARE v_schema VARCHAR(64); DECLARE v_table VARCHAR(128); DECLARE v_sql TEXT; DECLARE cur CURSOR FOR SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND ( ( TABLE_SCHEMA = 'fake_simple_admin' AND ( TABLE_NAME LIKE 't\_order%' OR TABLE_NAME LIKE 'c\_%' OR TABLE_NAME LIKE 't\_pickup%' OR TABLE_NAME LIKE 't\_recharge%' OR TABLE_NAME LIKE 't\_customer%' OR TABLE_NAME LIKE 't\_coupon%' OR TABLE_NAME LIKE 't\_member%' OR TABLE_NAME LIKE 't\_referral%' OR TABLE_NAME LIKE 't\_sales%' OR TABLE_NAME LIKE 't\_service%' ) ) OR ( TABLE_SCHEMA = 'track_center' AND TABLE_NAME LIKE 't\_order%' ) ) ORDER BY TABLE_SCHEMA, TABLE_NAME; DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = 1; SET FOREIGN_KEY_CHECKS = 0; OPEN cur; read_loop: LOOP FETCH cur INTO v_schema, v_table; IF v_done = 1 THEN LEAVE read_loop; END IF; SET v_sql = CONCAT('DELETE FROM `', v_schema, '`.`', v_table, '`'); SET @stmt = v_sql; PREPARE s FROM @stmt; EXECUTE s; DEALLOCATE PREPARE s; END LOOP; CLOSE cur; SET FOREIGN_KEY_CHECKS = 1; END$$ DELIMITER ; CALL `fake_simple_admin`.`sp_clear_biz_tables`(); DROP PROCEDURE IF EXISTS `fake_simple_admin`.`sp_clear_biz_tables`;