MySQL 不支持直接写SQL 语句实现循环插入功能. 想要实现该功能的方法有:用其他语言操控MySql或者用存储过程来实现两种。
1、存储过程实现 A、表结构 (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 B、定义存储过程
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 ;
C、调用存储过程
call sp_insert_batch (100); --参数为需要插入的行数
2、用其他语言操控MySql实现(以shell为例) for ((i=1;i<=1000;i++));
do `mysql test -e "insert into t1(idx,pw) value($i,md5($i));"`;
done Oracle 10g临时表空间组Oracle 常用性能监控SQL语句相关资讯 MySQL数据库教程
- MySQL 处理非法数据 (04/09/2013 08:06:28)
- MySQL关于timestamp和mysqldump的 (12/16/2012 13:25:41)
- MySQL保证数据完整性 (12/16/2012 12:00:35)
| - ERROR 1130: mysql 1130连接错误的 (12/16/2012 13:29:08)
- MySQL数据库教程:管理数据库和表( (12/16/2012 12:47:02)
- MySQL快速插入大批量数据存储过程 (11/05/2012 19:04:04)
|
本文评论 查看全部评论 (0)