MySQL动态创建表,数据分表的存储过程
2011-08-12 00:00
826 查看
BEGIN DECLARE `@i` int(11); DECLARE `@siteCount` int(11); DECLARE `@sqlstr` VARCHAR(2560); DECLARE `@sqlinsert` VARCHAR(2560); //以上声明变量 SELECT COUNT(0) into `@siteCount` FROM tbl_base_site; //计算表tbl_base_site的记录总条数 set `@i`=1; WHILE (`@i`-1)*300<`@siteCount` DO //while循环执行 SET @sqlstr = CONCAT('CREATE TABLE tbl_base_syslog',`@i`,'(syslog_id INT(11) AUTO_INCREMENT PRIMARY KEY, create_user VARCHAR(32), description text, create_time datetime, site_id INT(11), ip VARCHAR(64), version_id SMALLINT(2), module_identity VARCHAR(64), right_name VARCHAR(64) )'); prepare stmt from @sqlstr; execute stmt; //以上实现动态创建表 SET @sqlinsert = CONCAT('INSERT INTO tbl_base_syslog',`@i`,'( syslog_id, create_user, description, create_time, site_id, ip, version_id, module_identity, right_name) SELECT syslog_id, create_user, description, create_time, site_id, ip, version_id, module_identity, right_name FROM tbl_base_syslog WHERE site_id IN (select tbs.site_id from (select site_id from tbl_base_site limit ',`@i`*300,',300) as tbs) ORDER BY syslog_id'); prepare stmt from @sqlinsert; execute stmt; //以上实现从一张表查询记录插入到动态创建的新表中 SET `@i`= `@i`+1; END WHILE; END
相关文章推荐
- MySql存储过程动态创建表并插入数据
- MySQL存储过程动态创建表,数据分表
- 关于mysql存储过程创建动态表名及参数处理
- 使用MySQL存储过程创建动态交叉表(1)
- 使用MySQL存储过程创建动态交叉表(2)
- 关于mysql存储过程创建动态表名及参数处理
- MYSQL用存储过程创建百万级测试数据表
- mysql-存储过程案例-存储过程中创建表和修改表数据
- 使用MySQL存储过程创建动态交叉表(3)
- 两个存储过程:一、使用存储过程动态创建数据表。二、插入新记录。
- Mysql创建用户表并利用存储过程添加100万条随机用户数据
- mysql存储过程创建测试数据
- sqlserver数据导入mysql八: 把sqlserver中的存储过程注释后创建到mysql中(留着人工修改)
- sqlserver数据导入mysql八: 把sqlserver中的存储过程注释后创建到mysql中(留着人工修改)
- MySQL存储过程中实现执行动态SQL语句的方法
- mysql创建自定义函数与存储过程
- mysql启用系统定时任务自动调用存储过程动态拼接表
- mysql 存储过程动态执行sql
- Mysql存储过程的创建以及调用