建表语句
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(256) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
存储过程
DELIMITER $$
DROP PROCEDURE IF EXISTS `batch_insert`$$
CREATE PROCEDURE `batch_insert`(IN number INT)
BEGIN
DECLARE i INT DEFAULT 0;
SET autocommit=0;
WHILE
i < number DO
INSERT INTO users (NAME)
VALUES
('');
SET i = i + 1;
END WHILE;
SET @surname = '赵钱孙李周吴郑王冯陈诸卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花';
SET @NAME = '卓阳裕寅谛锐皓芃琛卓皓寅沛佳升郁文天安祜锋澄星梓贤泽福允';
SET @NAME2 = '卓阳裕钊年哲中权鹤信材喆锦谷锟栋芃荣胤烁伟日帆权博澄韦然';
UPDATE
users
SET
`name` = CONCAT(
SUBSTR(
@surname,
FLOOR(RAND() * LENGTH(@surname) / 3+1),
1
),
SUBSTR(
@NAME,
FLOOR(RAND() * LENGTH(@NAME) / 3+1),
1
),
SUBSTR(
@NAME2,
FLOOR(RAND() * LENGTH(@NAME2) / 3+1),
1
)
);
COMMIT;
END$$
DELIMITER ;
调用
TRUNCATE TABLE users; -- 截断表
CALL `batch_insert`(1000000); -- 1百万条数据
因为要随机生成名称,且当数据量大的时候难免会产生重名重姓的时候, 所以如果要不重复的话,可以使用该网站 生成随机名称 生成名称后拼接。
我这里生成了一些字符串,可以复制过去。
平斌良辞嘉寅子侠皓寅凯梁锋鹤晓颜谛贤铭年楷杰谛郁凯辞允芃安安梓年天谛哲澄裕腾禄年杰盛成嘉楷锟濡康星诚锐禧锦权帝宇哲谷祯皓祯睿瑞澄博鑫峰峰子远钊祜沛材允振炳暄禧俊烁禄峰楷康鑫邦栋铭谛鑫加谛福