mysql应用存储过程批量插入数据
2023-09-27 14:20:09 时间
--批量插入数据的sql语句 delimiter $$ DROP PROCEDURE IF EXISTS `test.sp_insert_batch` $$ CREATE DEFINER =`root`@`localhost` PROCEDURE `sp_insert_atch`(IN number INT) BEGIN DECLARE i INT ; 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; deallocate prepare stmt; SET @sqltext=''; END IF; END$$ delimiter ; CREATE TABLE `song`( `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Autoincrement element', `name` TEXT NOT NULL , `datetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `rank` INT NOT NULL , PRIMARY KEY (`id`) ) engine = MyISAM AUTO_INCREMENT = 8102001 DEFAULT CHARSET = gbk;
注:此存储过程,实际应用需要测试。
相关文章
- 【并发】mysql处理高并发,防止库存超卖
- MySQL 8.0从入门到精通
- MYSQL查询数据库表索引的硬盘空间占用
- mysql:批量插入不同的UUID
- mysql批量insert速度超慢
- mysql中关于存储过程无法实现迁移复制表中数据问题
- MySQL半同步复制
- MyCAT实现MySQL的读写分离
- MySQL 批量操作,一次插入多少行数据效率最高?
- mysql批量插入重复不报错
- Mysql批量更新的三种方式
- 关于批量插入数据之我见(100万级别的数据,mysql) (转)
- Navicat for mysql 显示中文乱码问题
- VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法
- MySQL【五】与python交互
- 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡
- Spring3+Mybatis3+Mysql+ivy+liquibase
- 批量杀死MySQL连接的几种方法
- MySQL批量SQL插入性能优化
- MySQL使用mysqldump+binlog完整恢复被删除的数据库
- Mysql中通过关联update将一张表的一个字段更新到另外一张表中
- c++将txt数据批量导入mysql数据库的例子