MYSQL用存储过程创建百万级测试数据表
生活随笔
收集整理的這篇文章主要介紹了
MYSQL用存储过程创建百万级测试数据表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.創建隨機字符串函數,便于創建名稱
-- delimiter $$ -- 執行出現“This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled -- (you *might* want to use the less safe log_bin_trust_function_creators variable)” 錯誤時需要先設置log_bin_trust_function_creators -- set global log_bin_trust_function_creators=1;DROP function if EXISTS rand_string; #創建一個指定字符個數的函數 create function rand_string(n INT) #返回字符串,注意:此處關鍵字是returns 而不是return returns varchar(255) BEGIN#定義一個臨時變量,給變量賦值'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'DECLARE 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; END2.創建隨機編號生成函數
drop function if exists rand_num; CREATE function rand_num() returns int(5) BEGINDECLARE i int default 0;set i = FLOOR(10+RAND()*500);return i; END3.創建數據表 – 部門表 dept
drop table if EXISTS dept; create table dept (deptno MEDIUMINT UNSIGNED not null DEFAULT 0,dname varchar(20) default '',ioc varchar(13) default'' ) ENGINE = myisam default CHARSET ='utf8'; ALTER table dept add PRIMARY key(deptno);4.創建數據表 – 員工表 emp
drop table if EXISTS emp; CREATE TABLE `emp` (`empno` mediumint(8) unsigned NOT NULL DEFAULT '0',`ename` varchar(20) NOT NULL DEFAULT '',`job` varchar(9) NOT NULL DEFAULT '',`mgr` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '上級編號',`hiredate` date NOT NULL COMMENT '入職日期',`salary` decimal(7,2) NOT NULL COMMENT '薪水',`comm` decimal(7,2) NOT NULL COMMENT '紅利',`deptno` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '部門編號' ) ENGINE=MYISAM DEFAULT CHARSET=utf8;5.插入測試數據
drop PROCEDURE IF EXISTS insert_emp ;CREATE PROCEDURE insert_emp (in start_no int(10),in max_num int(10))BEGINDECLARE i int default 0;# 設置自動提交為falseset autocommit =0;# 開啟循環REPEATset i = i+1;insert into emp values((start_no+i),rand_string(6),'SALESMAN',0001,CURDATE(),rand_num(),400,0002);UNTIL i=max_numEND REPEAT; END6.調用存儲過程,生成百萬數據
call insert_emp(10000,10000000);總結
以上是生活随笔為你收集整理的MYSQL用存储过程创建百万级测试数据表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ 管控台配置导入导出和重
- 下一篇: Flowable 数据库表结构 ACT_