最近由於資料庫資料日增長量較大,某些不到乙個月已經達到了百萬級資料量,根據需要進行散表。後台將每月新資料insert新錶,因此資料庫要定期建立新錶。涉及到了mysql 定時任務等一系列知識。
關於mysql複製表結構建立對應新錶,要求是將按月建立新錶,新錶名為原表名加上日期。如:原表game_center_brow_page_log,新錶game_center_brow_page_log_201605
思路:用concat函式拼接動態建立表的語句並執行
總結如下:
1.
`-- 設定日期變數@month 格式如:201605
set @month=date_format(now(),'%y%m');
--設定建表語句@sql_create_table
set @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,
`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; mysql複製表資料 MySQL 複製表結構
介紹 有時候我們需要原封不動的複製一張表的表結構來生成一張新錶,mysql提供了兩種便捷的方法。例 create tabletb base idint not null primary key,namevarchar 10 keyix name name engine myisam charset ...
Mysql複製表結構 表資料
1 複製表結構及資料到新錶 create table 新錶select from 舊表 這種方法會將oldtable中所有的內容都拷貝過來,當然我們可以用delete from newtable 來刪除。不過這種方法的乙個最不好的地方就是新錶中沒有了舊表的primary key extra auto...
Mysql複製表結構 表資料
1 複製表結構及資料到新錶 create table 新錶select from 舊表 這種方法會將oldtable中所有的內容都拷貝過來,當然我們可以用delete from newtable 來刪除。不過這種方法的乙個最不好的地方就是新錶中沒有了舊表的primary key extra auto...