以下是关于如何在mysql中创建1kw数据量的数据库、表和存储过程的详细指南。我们将使用sql语句来实现这一目标,并保持原文的语言和结构,同时对内容进行伪原创处理。
首先,我们将创建一个名为
bigData
的数据库,并在其中创建两个表:
dept
(部门表)和
emp
(员工表)。然后,我们将定义两个存储函数和两个存储过程来插入大量数据。
创建数据库和表
-- 创建1KW数据量的数据库CREATE DATABASE bigData;-- 部门表DROP TABLE IF EXISTS
dept;CREATE TABLEdept(
idINT(11) NOT NULL AUTO_INCREMENT COMMENT '部门id',
deptnoMEDIUMINT(9) NOT NULL DEFAULT '0' COMMENT '部门编号',
dnameVARCHAR(20) NOT NULL DEFAULT '' COMMENT '部门名称',
locVARCHAR(14) NOT NULL DEFAULT '' COMMENT '楼层',PRIMARY KEY (
id)) ENGINE=InnoDB AUTO_INCREMENT=600001 DEFAULT CHARSET=utf8;
-- 员工表DROP TABLE IF EXISTS
emp;CREATE TABLE
emp(
idINT(11) NOT NULL AUTO_INCREMENT COMMENT '员工主键id',
empnoMEDIUMINT(11) NOT NULL DEFAULT '0' COMMENT '员工编号',
enameVARCHAR(20) NOT NULL COMMENT '员工姓名',
jobVARCHAR(9) NOT NULL DEFAULT '' COMMENT '工作',
mgrMEDIUMINT(9) NOT NULL DEFAULT '0' COMMENT '上级编号',
hiredateDATE NOT NULL COMMENT '入职时间',
salDECIMAL(7,2) DEFAULT NULL COMMENT '薪水',
commMEDIUMINT(9) NOT NULL DEFAULT '0' COMMENT '红利',
deptnoMEDIUMINT(9) NOT NULL DEFAULT '0' COMMENT '部门编号',PRIMARY KEY (
id)) ENGINE=InnoDB AUTO_INCREMENT=12387608 DEFAULT CHARSET=utf8;
创建存储函数
接下来,我们定义一个存储函数
rand_string,用于生成指定长度的随机字符串。
-- 创建一个生成指定长度随机字符串的函数DELIMITER $$CREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255)BEGINDECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';DECLARE return_str VARCHAR(255) DEFAULT '';DECLARE i INT DEFAULT 0;WHILE i < n DOSET return_str = CONCAT(return_str, SUBSTRING(chars_str, FLOOR(1 + RAND() 52), 1));SET i = i + 1;END WHILE;RETURN return_str;END $$DELIMITER ;创建存储过程
我们将定义两个存储过程来向
emp和
dept表中插入大量数据。
怪兽AI数字人
数字人短视频创作,数字人直播,实时驱动数字人
44 查看详情
-- 定义存储过程,用于向emp表中插入大量数据-- start 开始数,max_length 最大长度DELIMITER $$CREATE PROCEDURE insert_emp(IN start INT(10), IN max_length INT(10))BEGINDECLARE i INT DEFAULT 0;SET autocommit = 0;REPEATSET i = i + 1;INSERT INTO emp(empno, ename, job, mgr, hiredate, sal, comm, deptno)VALUES ((start+i), rand_string(6), 'SALESMAN', 0001, CURDATE(), FLOOR(RAND() 10000), 400, FLOOR(RAND() * 100));UNTIL i = max_length END REPEAT;COMMIT;END $$DELIMITER ;-- 向emp表中插入1000万条数据CALL insert_emp(1000, 10000000);
-- 定义存储过程,用于向dept表中插入大量数据-- start 开始数,max_length 最大长度DELIMITER $$CREATE PROCEDURE insert_dept(IN start INT(10), IN max_length INT(10))BEGINDECLARE i INT DEFAULT 0;SET autocommit = 0;REPEATSET i = i + 1;INSERT INTO dept(deptno, dname, loc)VALUES (FLOOR(RAND() * 1000), rand_string(10), rand_string(8));UNTIL i = max_length END REPEAT;COMMIT;END $$DELIMITER ;
-- 向dept表中插入10万条数据CALL insert_dept(1000, 100000);
通过以上步骤,我们成功创建了数据库、表,并定义了存储函数和存储过程来插入大量数据。这种方法可以有效地生成大规模的数据集,用于测试和开发目的。
以上就是mysql 插入1000w条数据的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/599806.html赞 (0)打赏微信扫一扫
支付宝扫一扫
怪兽AI数字人
微信扫一扫
支付宝扫一扫