MySQL 存储过程 批量插入

来源:互联网 发布:华为荣耀8数据 编辑:程序博客网 时间:2024/06/10 07:23

在此之前,无论工作还是业余时间写代码,使用的都是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都打不出來......

0 0
原创粉丝点击