【Mysql】生成海量表

一、原料:

SQLyog、语句文件

语句文件如下:

------------------------------------------------------开始-------------------------------------------------------------

#1.创建测试数据库 tmp

CREATE DATABASE tmp;

#2. 创建表dept

CREATE TABLE dept( deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, dname VARCHAR(20) NOT NULL DEFAULT "", loc VARCHAR(13) NOT NULL DEFAULT "" );

#3.创建表EMP雇员

CREATE TABLE emp (empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, ename VARCHAR(20) NOT NULL DEFAULT "", job VARCHAR(9) NOT NULL DEFAULT "", mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, hiredate DATE NOT NULL, sal DECIMAL(7,2) NOT NULL, comm DECIMAL(7,2) NOT NULL, deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 );

#4,工资级别表

CREATE TABLE salgrade ( grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, losal DECIMAL(17,2) NOT NULL, hisal DECIMAL(17,2) NOT NULL );

INSERT INTO salgrade VALUES (1,700,1200); INSERT INTO salgrade VALUES (2,1201,1400); INSERT INTO salgrade VALUES (3,1401,2000); INSERT INTO salgrade VALUES (4,2001,3000); INSERT INTO salgrade VALUES (5,3001,9999); -- 默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。 -- 因为MySQL一遇到分号,它就要自动执行 -- 这种情况下,就需要事先把delimiter换成其它符号,如//或$$

#定义一个新的命令结束符合,因为函数语句中有分号,容易发生错误

DELIMITER $$

DELIMITER $$

#这里我创建了一个函数,名为 rand_string,可以随机返回指定个数的字符串

CREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255) #返回一个字符串 BEGIN DECLARE i INT DEFAULT 0; SET i = FLOOR(10+RAND()*500); RETURN i; END $$

#5.创建一个存储过程,可以添加雇员

CREATE PROCEDURE insert_emp(IN START INT(10),IN max_num INT(10)) BEGIN DECLARE i INT DEFAULT 0; #SET autocommit = 0,把autocommit设置成0,含义是不要自动提交

SET autocommit = 0;#默认不提交sql语句

REPEAT
SET i = i + 1;

#5.通过前面写的函数随机生成字符串和部门编号,然后加入emp表

INSERT INTO emp VALUES((START+i),rand_string(6),'SALESMAN',0001,CURDATE(),2000,400,rand_num()); UNTIL i = max_num END REPEAT;

#commit整体提交所有的sql语句,提高效率

COMMIT; END $$

#6.添加10 0000数据,编号从100001开始

CALL insert_emp(100001,110000)$$

#命令结束符,再重新设置为;

DELIMITER ;

------------------------------------------------------结束-------------------------------------------------------------

二、存在的问题

SQLyog如果是试用版的话,会出现最大只能生成1000条记录的问题

其他参考文章:(36条消息) Mysql海量数据表的快速生成(1000万条记录)_撸码的男人的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值