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