mysql随机生成百万条数据


建表
CREATE TABLE ts1 (a int, b int, index idx_a_b(a,b desc));



DELIMITER //
CREATE PROCEDURE ts_insert()
BEGIN     
    DECLARE i INT DEFAULT 1;
    WHILE i < 800
    DO
        insert into ts1 select RAND()*80000, RAND()*80000;
        SET i = i+1;
    END WHILE;
    commit;
END //
DELIMITER;

先执行上面的封装的函数

然后调用函数
CALL ts_insert();    
CREATE DATABASE atguigudb1;
USE atguigudb1;


#1.创建学生表和课程表 
CREATE TABLE `student_info` (
    `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
    `student_id` INT NOT NULL,
    `name` VARCHAR ( 20 ) DEFAULT NULL,
    `course_id` INT NOT NULL,
    `class_id` INT ( 11 ) DEFAULT NULL,
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY ( `id` ) 
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;


CREATE TABLE `course` (
    `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
    `course_id` INT NOT NULL,
    `course_name` VARCHAR ( 40 ) DEFAULT NULL,
    PRIMARY KEY ( `id` ) 
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;

SELECT @@log_bin_trust_function_creators;
SET GLOBAL log_bin_trust_function_creators = 1;

#函数1:创建随机产生字符串函数 

DELIMITER //
CREATE FUNCTION rand_string ( n INT ) 
    RETURNS VARCHAR ( 255 ) #该函数会返回一个字符串
BEGIN
    DECLARE chars_str VARCHAR ( 100 ) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
    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 ()* 52 ), 1 )); 
        SET i = i + 1; 
    END WHILE;
    RETURN return_str; 
END // 
DELIMITER;






#函数2:创建随机数函数
DELIMITER //
CREATE FUNCTION rand_num ( from_num INT, to_num INT ) RETURNS INT ( 11 ) BEGIN
    DECLARE
        i INT DEFAULT 0;
    
    SET i = FLOOR(
        from_num + RAND()*(
            to_num - from_num + 1 
        ));
    RETURN i;
    
END // 
DELIMITER;



# 存储过程1:创建插入课程表存储过程  
DELIMITER //
CREATE PROCEDURE insert_course (max_num INT)
BEGIN
    DECLARE i INT DEFAULT 0; 
    SET autocommit = 0;#设置手动提交事务 
    REPEAT #循环 
    SET i = i + 1; #赋值 
    INSERT INTO course (course_id, course_name ) VALUES (rand_num(10000,10100),rand_string(6)); 
    UNTIL i = max_num
END REPEAT;
COMMIT;#提交事务 
END // 
DELIMITER;



# 存储过程2:创建插入学生信息表存储过程
    
DELIMITER  //
    CREATE PROCEDURE insert_stu ( max_num INT ) 
    BEGIN
    DECLARE i INT DEFAULT 0; 
        SET autocommit = 0;#设置手动提交事务
        REPEAT#循环 
        SET i = i + 1; #赋值
        INSERT INTO student_info ( course_id, class_id, student_id, NAME ) VALUES ( rand_num ( 10000, 10100 ), rand_num ( 10000, 10200 ), rand_num ( 1, 200000 ), rand_string ( 6 ));
        UNTIL i = max_num 
END REPEAT;
        COMMIT;#提交事务 
END // 
DELIMITER;
        
        
        
CALL insert_course(100);
CALL insert_stu(1000000);
        
        
        
        
        
        
        
        
        
        
        
        
        

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
Bing Webmaster Portal Back

相关