mysql生成20萬條數據(連表插入)


  • 創建一個存儲過程

    DELIMITER $$ -- 設置定界符為$$,與';'意思相同,防止相同符號產生沖突
    
    USE `yunkc_base1`$$ -- 使用數據庫
    
    DROP PROCEDURE IF EXISTS `insert_test`$$ -- 如果存在insert_test存儲過程名字,則刪除
    
    CREATE DEFINER=`ykcbase`@`%` PROCEDURE `insert_test`() -- 設置存儲過程的權限
    BEGIN		-- 開始
      DECLARE i INT; 	-- 定義一個i的int變量
      SET i = 0;		-- 設置i的值為0
      SET @id = 3;		-- 設置一個id變量,全局
      START TRANSACTION;	-- 開啟事務
      WHILE		-- 循環
        i < 200001 DO	-- 當i的值小於200001的時候執行 do
        INSERT INTO `base_s_t_charging_user` (	-- 插入語句
          `user_account`,
          `vehicle_org_id`,
          `user_nick_name`,
          `user_avatar`,
          `user_phone`,
          `user_district_id`,`is_ykc`
    
        )
        VALUES
          (
            CONCAT('yh', @id := @id + 1),	-- 用戶自增 拼接'yh1'
            163,
            generateUserName (),	-- 外部函數,用來生成用戶名
            '',
            generatePhone (),		-- 外部函數,用來生成手機號
            119,1
          );
        INSERT INTO `base_d_t_charging_user_operation_info` (`user_id`, `user_card_no`,`multiple_charge`,`user_freeze_status`)
        VALUES
          (LAST_INSERT_ID(), generatePhone (),500102,600102);	-- LAST_INSERT_ID(),mysql內部函數,獲取上一條插入語句的值
        SET i = i + 1;	-- 執行完一次,i++,保證數據不重復
      END WHILE;	-- 結束循環
      COMMIT;	-- 事務一次性提交
    END$$	-- 結束
    
    DELIMITER ; -- 告訴mysql,$$ 定界符已經使用結束了,重新賦值為';'
    
  • 生成姓名函數

    DELIMITER $$
    
    CREATE FUNCTION `yunkc_base1`.`generateUserName` () RETURNS varchar(255) CHARSET utf8 DETERMINISTIC 	 -- 創建函數generateUserName() RETURNS 返回值類型為varchar(255),字符集utf8
    BEGIN	-- 開始
      DECLARE xing VARCHAR (2056) DEFAULT '趙錢孫李周鄭王馮陳楮衛蔣沈韓楊朱秦尤許何呂施張孔曹嚴華金魏陶姜戚謝喻柏水竇章雲蘇潘葛奚范彭郎魯韋昌馬苗鳳花方俞任袁柳酆鮑史唐費廉岑薛雷賀倪湯滕殷羅畢郝鄔安常樂於時傅皮齊康伍余元卜顧孟平黃和穆蕭尹姚邵湛汪祁毛禹狄米貝明臧計伏成戴談宋茅龐熊紀舒屈項祝董梁杜阮藍閩席季麻強賈路婁危江童顏郭梅盛林刁鍾徐丘駱高夏蔡田樊胡凌霍虞萬支柯昝管盧莫經裘繆干解應宗丁宣賁鄧郁單杭洪包諸左石崔吉鈕龔程嵇邢滑裴陸榮翁';	-- 定義姓
      DECLARE ming VARCHAR (2056) DEFAULT '嘉懿煜城懿軒燁偉苑博偉澤熠彤鴻煊博濤燁霖燁華煜祺智宸正豪昊然明傑誠立軒立輝峻熙弘文熠彤鴻煊燁霖哲瀚鑫鵬致遠俊馳雨澤燁磊晟睿天佑文昊修潔黎昕遠航旭堯鴻濤偉祺軒越澤浩宇瑾瑜皓軒擎蒼擎宇志澤睿淵楷瑞軒弘文哲瀚雨澤鑫磊夢琪憶之桃慕青問蘭爾嵐元香初夏沛菡傲珊曼文樂菱痴珊恨玉惜文香寒新柔語蓉海安夜蓉涵柏水桃醉藍春兒語琴從彤傲晴語蘭又菱碧彤元霜憐夢紫寒妙彤曼易南蓮紫翠雨寒易煙如萱若南尋真曉亦向珊慕靈以蕊尋雁映易雪柳孤嵐笑霜海雲凝天沛珊寒雲冰旋宛兒綠真盼兒曉霜碧凡夏菡曼香若煙半夢雅綠冰藍靈槐平安書翠翠風香巧代雲夢曼幼翠友巧聽寒夢柏醉易訪旋亦玉凌萱訪卉懷亦笑藍春翠靖柏夜蕾冰夏夢松書雪樂楓念薇靖雁尋春恨山從寒憶香覓波靜曼凡旋以亦念露芷蕾千蘭新波代真新蕾雁玉冷卉紫山千琴恨天傲芙盼山懷蝶冰蘭山柏翠萱樂丹翠柔谷山之瑤冰露爾珍谷雪樂萱涵菡海蓮傲蕾青槐冬兒易夢惜雪宛海之柔夏青亦瑤妙菡春竹修傑偉誠建輝晉鵬天磊紹輝澤洋明軒健柏煊昊強偉宸博超君浩子騫明輝鵬濤炎彬鶴軒越彬風華靖琪明誠高格光華國源宇晗昱涵潤翰飛翰海昊乾浩博和安弘博鴻朗華奧華燦嘉慕堅秉建明金鑫錦程瑾瑜鵬經賦景同靖琪君昊俊明季同開濟凱安康成樂語力勤良哲理群茂彥敏博明達朋義彭澤鵬舉濮存溥心璞瑜浦澤奇邃祥榮軒'; -- 定義名
      DECLARE I_xing INT DEFAULT LENGTH(xing) / 3; 	-- 定義姓的下標
      DECLARE I_ming INT DEFAULT LENGTH(ming) / 3;	-- 定義名的下標
      DECLARE return_str VARCHAR (2056) DEFAULT '';	-- 定義默認的返回值
      SET return_str = CONCAT(
        return_str,
        SUBSTRING(xing, FLOOR(1 + RAND() * I_xing), 1)	-- 截取xing集合中的隨機一個下標,取一位(字符下標從1開始)
      );
      SET return_str = CONCAT(
        return_str,
        SUBSTRING(ming, FLOOR(1 + RAND() * I_ming), 1)
      );
      IF RAND() > 0.400			-- 如果隨機函數值大於0.4.則添加第3個名字
      THEN SET return_str = CONCAT(
        return_str,
        SUBSTRING(ming, FLOOR(1 + RAND() * I_ming), 1)
      );
      END IF;		-- 結束if語句
      RETURN return_str;		-- 返回執行結果
    END $$		-- 結束
    
    DELIMITER ;	-- 重新定義定界符為';'
    
  • 生成手機號函數

    DELIMITER $$
    
    CREATE FUNCTION `yunkc_base1`.`generatePhone` () RETURNS char(11) CHARSET utf8
    DETERMINISTIC
    BEGIN
      DECLARE head VARCHAR (100) DEFAULT '000,156,136,176';
      DECLARE content CHAR(10) DEFAULT '0123456789';
      DECLARE phone CHAR(11) DEFAULT SUBSTRING(head, 1+ (FLOOR(1 + (RAND() * 3)) * 4), 3);
      #SET phone = CONCAT(phone, substring('156,136,123,456,789', 1+(FLOOR(1 + (RAND() * 4))*4), 3));
       DECLARE i INT DEFAULT 1;
      DECLARE len INT DEFAULT LENGTH(content);
      WHILE
        i < 9 DO SET i = i + 1;
        SET phone = CONCAT(
          phone,
          SUBSTRING(content, FLOOR(1 + RAND() * len), 1)
        );
      END WHILE;
      RETURN phone;
    END $$
    
    DELIMITER ;
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM