CREATE DEFINER = `root`@`%%` PROCEDURE `backup_data`()
BEGIN
-- 动态创建表
SET @backupMonth = DATE_FORMAT(date_sub(curdate(),interval 1 MONTH),'%Y%m');
SET @tableName = CONCAT("backup_tzdr_fund_" ,@backupMonth);
SET @createSql = CONCAT('create table ',@tableName," (
`id` VARCHAR(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=UTF8");
PREPARE createSql FROM @createSql;
EXECUTE createSql;
-- 动态创建表
-- 插入数据
SET @insertSql = CONCAT('INSERT INTO ',@tableName,"
(`id`) SELECT id from w_user where FROM_UNIXTIME(ctime,'%Y%m')=",
@backupMonth);
PREPARE insertSql FROM @insertSql;
EXECUTE insertSql;
-- 插入数据
END;
本文介绍了一个使用MySQL存储过程实现的动态创建备份表并插入指定月份数据的方法。通过存储过程,可以根据当前日期减去一个月的时间来确定备份表名,并创建相应的表结构。接着,将指定月份的数据从源表中选取并插入到新建的备份表中。
1万+

被折叠的 条评论
为什么被折叠?



