MySQL 存储过程 批量插入
2016-02-02 23:45
411 查看
在此之前,无论工作还是业余时间写代码,使用的都是SQL SERVER数据库,MySQL数据库只是在最初Learn数据库的时候顺便看了一下,最多也就是个人网站使用,但都是简单的CRUD,不涉及MySQL的高级操作。
今天想测试一下MySQL查询大数据的时候性能,以及Learn优化,但需要批处理插入几十几百万条数据,搜索了一下发现不能像SQL SERVER 那样直接写个循环批量插入,需要写一个存储过程,然后再调用存储过程来实现。折腾了一个小时,终于写出来了,不熟悉MySQL语法的后果。。
存储过程编写:
#如果存在相同名称的存储过程,删除
DROP PROCEDURE IF EXISTS sp_batchinsert;
#参数列表和SQL SERVER不同,这个格式
CREATE PROCEDURE sp_batchinsert(IN loop_times INT)
#所有的语句都写在Begin-End块中,一致
BEGIN
#声明临时变量,不用加@
DECLARE count INT DEFAULT 0;
#WHILE循环,DO + END WHILE包围,不是BEGIN-END
WHILE count < loop_times DO
SET count = count + 1;
#字符串和数字连接,CAST不能使用,用Concat可以连接起来组合成字符串
INSERT INTO book (name, author,price,country,publisher,version,description)
VALUES(CONCAT('BookName', count) , 'author', 100, 'China','Xinhua',1,'Test Data');
END WHILE;
END
调用存储过程:
#SQL SERVER:exec sp_batchinsert 100
call sp_batchinsert(100)
这样就可以批量插入了。
另。。为毛IBUS打不出xuexi啊,只要是ue都打不出來......
今天想测试一下MySQL查询大数据的时候性能,以及Learn优化,但需要批处理插入几十几百万条数据,搜索了一下发现不能像SQL SERVER 那样直接写个循环批量插入,需要写一个存储过程,然后再调用存储过程来实现。折腾了一个小时,终于写出来了,不熟悉MySQL语法的后果。。
存储过程编写:
#如果存在相同名称的存储过程,删除
DROP PROCEDURE IF EXISTS sp_batchinsert;
#参数列表和SQL SERVER不同,这个格式
CREATE PROCEDURE sp_batchinsert(IN loop_times INT)
#所有的语句都写在Begin-End块中,一致
BEGIN
#声明临时变量,不用加@
DECLARE count INT DEFAULT 0;
#WHILE循环,DO + END WHILE包围,不是BEGIN-END
WHILE count < loop_times DO
SET count = count + 1;
#字符串和数字连接,CAST不能使用,用Concat可以连接起来组合成字符串
INSERT INTO book (name, author,price,country,publisher,version,description)
VALUES(CONCAT('BookName', count) , 'author', 100, 'China','Xinhua',1,'Test Data');
END WHILE;
END
调用存储过程:
#SQL SERVER:exec sp_batchinsert 100
call sp_batchinsert(100)
这样就可以批量插入了。
另。。为毛IBUS打不出xuexi啊,只要是ue都打不出來......
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- 让Python文件也可以当bat文件运行
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 数据库链接字符串查询网站
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列