900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > mysql复制表结构创建新表

mysql复制表结构创建新表

时间:2023-06-05 02:48:07

相关推荐

mysql复制表结构创建新表

最近由于数据库数据日增长量较大,某些不到一个月已经达到了百万级数据量,根据需要进行散表。后台将每月新数据insert新表,因此数据库要定期创建新表。涉及到了mysql 定时任务等一系列知识。

关于mysql复制表结构创建对应新表,要求是将按月创建新表,新表名为原表名加上日期。如:原表game_center_brow_page_log,新表game_center_brow_page_log_05

思路:用concat函数拼接动态创建表的语句并执行

总结如下:

1.

` -- 设置日期变量@month 格式如:05set @month=date_format(now(),'%Y%m');--设置建表语句@sql_create_tableset @sql_create_table = concat('create table if not exists game_center_download_data','_',@month,"(`id` int(11) NOT NULL AUTO_INCREMENT,`type` smallint(11) DEFAULT NULL,`num` int(11) DEFAULT NULL,`clientTime` varchar(45) DEFAULT NULL,`channel` varchar(45) DEFAULT NULL,`version` varchar(45) DEFAULT NULL,`model` varchar(125) DEFAULT NULL,`packageName` varchar(125) DEFAULT NULL,`appName` varchar(125) DEFAULT NULL,`isCp` tinyint(4) DEFAULT NULL COMMENT '是否为cp',PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC");--存储过程使用prepare sql_create_table from @sql_create_table;execute sql_create_table;

注:这种比较麻烦,还得show create table game_center_download_data;得到原表结构

2.

set @target_tname = 'game_center_download_data';set @month=date_format(now(),'%Y%m');set @sql_create_table = concat('create table if not exists ',@target_tname,'_',@month,' like ',@target_tname);prepare sql_create_table from @sql_create_table;execute sql_create_table;

注:简洁!原理:create table if not exists test like game_center_download_data;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。