ALTER TABLE xxx TRUNCATE PARTITION p20220104;
功能:指定清空之前某一天的数据,直接调用存储过程实现
- DELIMITER $$
-
- USE `managerdb`$$
-
- DROP PROCEDURE IF EXISTS `partition_trunc`$$
-
- CREATE DEFINER=`root`@`localhost` PROCEDURE `partition_trunc`(p_schema_name VARCHAR(64), p_table_name VARCHAR(64), p_trunc_before_date INT)
- BEGIN
- /*
- p_trunc_before_date 清空分区表第N天的数据
- */
- DECLARE trunc_part_name VARCHAR(16);
-
- SET trunc_part_name = CONCAT('p',DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL p_trunc_before_date DAY),'%Y%m%d'));
- SET @trunc_partitions = CONCAT("ALTER TABLE ", p_schema_name, ".", p_table_name, " TRUNCATE PARTITION ",trunc_part_name); -- 拼执行语句
-
- SELECT @trunc_partitions; -- 打印删除详情
-
- PREPARE STMT FROM @trunc_partitions;
-
- EXECUTE STMT;
-
- DEALLOCATE PREPARE STMT;
-
-
-
- END$$
-
- DELIMITER ;
实例:
call managerdb.partition_trunc('test','t_001',1);
清空test.t_001一天前的单个分区数据