批量插入数据的存储过程
2008-10-07 13:41
701 查看
来自ITPUB的一位老兄。写的很好。贴出来。
DELIMITER $$ DROP PROCEDURE IF EXISTS `test`.`sp_insert_batch`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insert_batch`(IN number int(11)) BEGIN declare i int(11); set i = 1; -- such as 1-2000,2000-4000,.... WHILE i <= number DO if mod(i,2000)=1 then set @sqltext =concat('(''',concat('t',i),''',''',now(),''',',ceil(10*rand()),')'); elseif mod(i,2000)=0 then set @sqltext=concat(@sqltext,',(''',concat('t',i),''',''',now(),''',',ceil(10*rand()),')'); set @sqltext=concat('insert into song (name,datetime,rank) values',@sqltext); prepare stmt from @sqltext; execute stmt; DEALLOCATE PREPARE stmt; set @sqltext=''; else set @sqltext=concat(@sqltext,',(''',concat('t',i),''',''',now(),''',',ceil(10*rand()),')'); end if; set i = i + 1; END WHILE; -- process when number is not be moded by 2000 -- such as 2001,4002,15200,... if @sqltext<>'' then set @sqltext=concat('insert into song (name,datetime,rank) values',@sqltext); prepare stmt from @sqltext; execute stmt; DEALLOCATE PREPARE stmt; set @sqltext=''; end if; END$$ DELIMITER ;
附表结构。
/*DDL Information For - test.song*/ -----------------------------------
Table Create Table ------ ---------------------------------------------------------------------------------------- song CREATE TABLE `song` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Autoincreament element', `name` text NOT NULL, `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `rank` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=8102001 DEFAULT CHARSET=gbk
相关文章推荐
- 批量插入数据存储过程备忘
- 批量插入数据的存储过程
- 创建测试表,批量插入数据的存储过程,分页存储过程
- MYSQL存储过程:批量更新、插入数据、游标
- [导入]批量插入数据的存储过程
- 存储过程配合UpdateDaset方法批量插入Dataset数据实现代码
- 用存储过程加UpdateDaset方法批量插入Dataset数据
- [导入]批量插入数据的存储过程
- Sybase数据库——批量插入数据存储过程
- 批量插入数据的存储过程
- mysql利用存储过程批量插入数据
- mysql利用存储过程批量插入数据
- 使用Oracle的存储过程批量插入数据
- 创建测试表,批量插入数据的存储过程,分页存储过程
- 存储过程学习-批量插入10000条数据进数据库
- 存储过程批量插入随机数据
- 存储过程学习-批量插入10000条数据进数据库
- 存储过程配合UpdateDaset方法批量插入Dataset数据实现代码
- mysql利用存储过程批量插入数据
- 使用mysql存储过程快速插入百万mysql测试数据