您的位置:首页 > 数据库 > MySQL

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 数据库 批处理