批量插入数据的存储过程

简介:
来自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)=then
       set @sqltext =concat('(''',concat('t',i),''',''',now(),''',',ceil(10*rand()),')');
    elseif mod(i,2000)=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






本文转自 david_yeung 51CTO博客,原文链接: http://blog.51cto.com/yueliangdao0608/81281 ,如需转载请自行联系原作者
相关文章
|
3月前
|
SQL 存储 关系型数据库
sql语句,索引,视图,存储过程
sql语句,索引,视图,存储过程
30 0
|
3月前
|
存储 SQL 缓存
4.2.1 SQL语句、索引、视图、存储过程
4.2.1 SQL语句、索引、视图、存储过程
|
1月前
|
SQL 数据库
|
存储 关系型数据库 MySQL
MySQL存储过程——批量插入数据
MySQL存储过程——批量插入数据
1118 0
MySQL存储过程——批量插入数据
使用存储过程批量更新单表中的数据
使用存储过程批量更新单表中的数据
SQL语句获取表结构
获取表的结构数据,如表名,数据类型,精度等数据
259 0
SQL语句获取表结构
删除重复记录的SQL语句
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。 1、对于第一种重复,比较容易解决,使用 select distinct * from tableName 就可以得到无重复记录的结果集。
1083 0

相关课程

更多