mysql 存储过程动态创建表并插入数据

本文介绍了一个使用MySQL存储过程实现的动态创建备份表并插入指定月份数据的方法。通过存储过程,可以根据当前日期减去一个月的时间来确定备份表名,并创建相应的表结构。接着,将指定月份的数据从源表中选取并插入到新建的备份表中。

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;

转载于:https://my.oschina.net/u/2988090/blog/1835595

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值