有时本地需要调试,而又因数据小而得不到效果,一条条insert又太麻烦,故而利用存储过程进行数据插入一劳永逸。
首先创建所需的表(根据自己需要自行创建):
DROP TABLE IF EXISTS `m_user`;
CREATE TABLE `m_user` (
`id` bigint(20) PRIMARY key not null AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`email` varchar(30) DEFAULT NULL,
`password` varchar(32) DEFAULT NULL,
`status` tinyint(1) NULL DEFAULT 0
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
然后创建存储过程方法(方法名为add_user_data, 参数为int条数):
CREATE PROCEDURE add_user_data(IN n int)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= n DO
INSERT INTO m_user(username, email, password) values(CONCAT(\'username_\', i), CONCAT(i ,\'@qq.com\'), MD5(i));
SET i = i + 1;
END WHILE;
END;
执行:
CALL add_user_data(200000);
这里插入200000条数据
如果需要修改,或者删除都需要删除这个存储过程,不然会提示已存在:
drop PROCEDURE add_user_data;
搞乱点,可以随便设点随机字符,如何组织自行选择,这只是个不像样的示例。
INSERT INTO test_user(username, email, password) values(CONCAT(\'user.\', UPPER(SUBSTRING(REPLACE(UUID(),\'-\',\'\'),1,10))), CONCAT(SUBSTRING(MD5(RAND()), 1, 10) ,\'@qq.com\'), MD5(i));
OVER!