mysql 插入1000w条数据

雪夜
发布: 2025-09-03 08:59:28
原创
404人浏览过

以下是关于如何在mysql中创建1kw数据量的数据库、表和存储过程的详细指南。我们将使用sql语句来实现这一目标,并保持原文的语言和结构,同时对内容进行伪原创处理。

首先,我们将创建一个名为

bigData
登录后复制
的数据库,并在其中创建两个表:
dept
登录后复制
(部门表)和
emp
登录后复制
(员工表)。然后,我们将定义两个存储函数和两个存储过程来插入大量数据。

创建数据库和表

-- 创建1KW数据量的数据库
CREATE DATABASE bigData;
<p>-- 部门表
DROP TABLE IF EXISTS </p><pre class="brush:php;toolbar:false;">dept;
CREATE TABLE <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">dept
登录后复制
(
id
登录后复制
INT(11) NOT NULL AUTO_INCREMENT COMMENT '部门id',
deptno
登录后复制
MEDIUMINT(9) NOT NULL DEFAULT '0' COMMENT '部门编号',
dname
登录后复制
VARCHAR(20) NOT NULL DEFAULT '' COMMENT '部门名称',
loc
登录后复制
VARCHAR(14) NOT NULL DEFAULT '' COMMENT '楼层', PRIMARY KEY (
id
登录后复制
) ) ENGINE=InnoDB AUTO_INCREMENT=600001 DEFAULT CHARSET=utf8;

-- 员工表 DROP TABLE IF EXISTS

emp
登录后复制
; CREATE TABLE
emp
登录后复制
(
id
登录后复制
INT(11) NOT NULL AUTO_INCREMENT COMMENT '员工主键id',
empno
登录后复制
MEDIUMINT(11) NOT NULL DEFAULT '0' COMMENT '员工编号',
ename
登录后复制
VARCHAR(20) NOT NULL COMMENT '员工姓名',
job
登录后复制
VARCHAR(9) NOT NULL DEFAULT '' COMMENT '工作',
mgr
登录后复制
MEDIUMINT(9) NOT NULL DEFAULT '0' COMMENT '上级编号',
hiredate
登录后复制
DATE NOT NULL COMMENT '入职时间',
sal
登录后复制
DECIMAL(7,2) DEFAULT NULL COMMENT '薪水',
comm
登录后复制
MEDIUMINT(9) NOT NULL DEFAULT '0' COMMENT '红利',
deptno
登录后复制
MEDIUMINT(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)
BEGIN
DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
DECLARE return_str VARCHAR(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = CONCAT(return_str, SUBSTRING(chars_str, FLOOR(1 + RAND() <em> 52), 1));
SET i = i + 1;
END WHILE;
RETURN return_str;
END $$
DELIMITER ;
登录后复制

创建存储过程

我们将定义两个存储过程来向

emp
登录后复制
dept
登录后复制
表中插入大量数据。

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人44
查看详情 怪兽AI数字人
-- 定义存储过程,用于向emp表中插入大量数据
-- start 开始数,max_length 最大长度
DELIMITER $$
CREATE PROCEDURE insert_emp(IN start INT(10), IN max_length INT(10))
BEGIN
DECLARE i INT DEFAULT 0;
SET autocommit = 0;
REPEAT
SET 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() </em> 10000), 400, FLOOR(RAND() * 100));
UNTIL i = max_length END REPEAT;
COMMIT;
END $$
DELIMITER ;</p><p>-- 向emp表中插入1000万条数据
CALL insert_emp(1000, 10000000);</p><p>-- 定义存储过程,用于向dept表中插入大量数据
-- start 开始数,max_length 最大长度
DELIMITER $$
CREATE PROCEDURE insert_dept(IN start INT(10), IN max_length INT(10))
BEGIN
DECLARE i INT DEFAULT 0;
SET autocommit = 0;
REPEAT
SET 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 ;</p><p>-- 向dept表中插入10万条数据
CALL insert_dept(1000, 100000);
登录后复制

mysql 插入1000w条数据

通过以上步骤,我们成功创建了数据库、表,并定义了存储函数和存储过程来插入大量数据。这种方法可以有效地生成大规模的数据集,用于测试和开发目的。

以上就是mysql 插入1000w条数据的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号