mysql批量增加表中新列存储过程,mysql中新
一般访问量比较大的网站,请求日志表都是每天一张表独立创建. 业务需要为每张表都添加一个新列,纠结了半天,写了个存储过程如下:
日志表结构类型 tbl_ads_req_20140801, tbl_ads_req_20140802 ...
DELIMITER //
create procedure sp2()
begin
declare sTime varchar(32);
declare eTime varchar(32);
declare sName varchar(128);
declare lName varchar(128);
declare sqlVar varchar(128);
declare rest int;
set sTime = '20140801';
set eTime = '20140831';
set sName = CONCAT('tbl_ads_req_','');
set lName = '';
set rest = 1;
while rest > 0 do
set sTime = (select DATE_FORMAT((select ADDDATE(sTime,1)),'%Y%m%d'));
set lName = CONCAT(sName,sTime);
set sqlVar=CONCAT(' alter table ',lName,' add app_package varchar(64)');
set @v_s=sqlVar;
prepare stmt from @v_s;
EXECUTE stmt;
set rest = DATEDIFF(eTime,sTime);
END while;
end;
//
DELIMITER;
涉及到一些mysql函数需要自己查哦!
问题是你要改成的数据有什么规律吗?
就像你写的,1,2,3,4,……,25,26.如果有规律,那就好办。
可以用存储过程循环批量处理。
存为.sql脚本
然后打开mysql的命令行,
转到(cd)放这个脚本的目录下
输入:\. 这个sql的完全路径(包括这个sql文件名,注意路径要用“\\”隔开)
回车
即可批量导入。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。