• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL如何利用存储过程快速生成100万条数据详解

    前言

    在测试的时候为了测试大数据量的情况下项目的抗压能力我们通常要创造一些测试数据那么现在这个方法绝对好用

    其中可能会有sql空间的报错可以自己尝试解决,这里做了分批插入,每次插入30万条,所以没有遇到类似的空间问题

    首先,创建要插入100万数据的表格

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
     
    -- ----------------------------
    -- Table structure for sdb_b2c_orders
    -- ----------------------------
    DROP TABLE IF EXISTS `sdb_b2c_orders`;
    CREATE TABLE `sdb_b2c_orders`  (
      `order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '订单号',
      `seller_order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '商户订单号',
      `total_amount` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT '商品默认货币总值',
      `final_amount` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT '订单货币总值, 包含支付价格,税等',
      `pay_status` enum('0','1','2','3','4','5') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '付款状态 0-未支付 1-已支付 2-已付款至担保方 3-部分付款 4-部分退款 5-全额退款',
      `ship_status` enum('0','1','2','3','4') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '发货状态',
      `is_delivery` enum('Y','N') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'Y' COMMENT '是否需要发货',
      `createtime` int(10) UNSIGNED NULL DEFAULT NULL COMMENT '下单时间',
      `last_modified` int(10) UNSIGNED NULL DEFAULT NULL COMMENT '最后更新时间',
      `ectools_payments` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `payment` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '支付方式',
      `shipping_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT '配送方式',
      `shipping` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '配送方式',
      `member_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT '会员用户名',
      `platform_member_id` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '平台会员ID',
      `store_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT '收款门店ID',
      `confirm_status` enum('0','1','2','3') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '门店接单状态',
      `confirm_time` int(10) UNSIGNED NULL DEFAULT NULL COMMENT '接单时间',
      `pickself_status` enum('0','1') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '自提状态',
      `pickself_time` int(10) NULL DEFAULT NULL COMMENT '自提时间',
      `pickself_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT '自提门店ID',
      `operator_id` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT '收款用户ID',
      `weixinscan_qrcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '微信付款码',
      `alipay_qrcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '支付宝付款码',
      `unionpay_qrcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '银联付款码',
      `qrcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '核销码',
      `promotion_type` enum('normal','prepare','recharge','cashier') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'normal' COMMENT '销售类型',
      `status` enum('active','dead','finish') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'active' COMMENT '订单状态',
      `confirm` enum('Y','N') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N' COMMENT '确认状态',
      `ship_area` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '收货地区',
      `ship_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '收货人',
      `weight` decimal(20, 3) NULL DEFAULT NULL COMMENT '订单总重量',
      `tostr` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '订单文字描述',
      `itemnum` mediumint(8) UNSIGNED NULL DEFAULT NULL COMMENT '订单子订单数量',
      `ip` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'IP地址',
      `ship_addr` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '收货地址',
      `ship_zip` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '收货人邮编',
      `ship_tel` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '收货电话',
      `ship_email` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '收货人email',
      `ship_time` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '配送时间',
      `ship_mobile` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '收货人手机',
      `cost_item` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT '订单商品总价格',
      `is_tax` enum('true','false') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'false' COMMENT '是否要开发票',
      `tax_type` enum('false','personal','company') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'false' COMMENT '发票类型',
      `tax_content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '发票内容',
      `cost_tax` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT '订单税率',
      `tax_company` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '发票抬头',
      `is_protect` enum('true','false') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'false' COMMENT '是否还有保价费',
      `cost_protect` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT '保价费',
      `cost_payment` decimal(20, 3) NULL DEFAULT NULL COMMENT '支付费用',
      `currency` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单支付货币',
      `cur_rate` decimal(10, 4) NULL DEFAULT 1.0000 COMMENT '订单支付货币汇率',
      `score_u` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT '订单使用积分',
      `score_g` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT '订单获得积分',
      `discount` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT '订单减免',
      `pmt_goods` decimal(20, 3) NULL DEFAULT NULL COMMENT '商品促销优惠',
      `pmt_order` decimal(20, 3) NULL DEFAULT NULL COMMENT '订单促销优惠',
      `payed` decimal(20, 3) NULL DEFAULT 0.000 COMMENT '订单支付金额',
      `memo` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '订单附言',
      `disabled` enum('true','false') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'false',
      `displayonsite` enum('true','false') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'true',
      `mark_type` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'b1' COMMENT '订单备注图标',
      `mark_text` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '订单备注',
      `cost_freight` decimal(20, 3) NOT NULL DEFAULT 0.000 COMMENT '配送费用',
      `extend` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'false' COMMENT '订单扩展',
      `order_refer` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'local' COMMENT '订单来源',
      `addon` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '订单附属信息(序列化)',
      `source` enum('pc','wap','weixin','cashier','paycode','eleme','meituan') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'pc' COMMENT '平台来源',
      `source_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商圈库名',
      `merchant_bn` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商户号',
      UNIQUE INDEX `idx_bn`(`order_id`, `merchant_bn`) USING BTREE,
      INDEX `ind_ship_status`(`ship_status`) USING BTREE,
      INDEX `ind_pay_status`(`pay_status`) USING BTREE,
      INDEX `ind_promotion_type`(`promotion_type`) USING BTREE,
      INDEX `ind_status`(`status`) USING BTREE,
      INDEX `ind_disabled`(`disabled`) USING BTREE,
      INDEX `ind_last_modified`(`last_modified`) USING BTREE,
      INDEX `ind_createtime`(`createtime`) USING BTREE,
      INDEX `idx_order_refer`(`order_refer`) USING BTREE,
      INDEX `idx_bn_aa`(`merchant_bn`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单表' ROW_FORMAT = Dynamic;
     
    SET FOREIGN_KEY_CHECKS = 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 $$
    CREATE FUNCTION rand_num( ) 
    RETURNS INT(5)  
    BEGIN   
     DECLARE i INT DEFAULT 0;  
     SET i = FLOOR(100+RAND()*10);  
    RETURN i;  
     END $$
     
     
    #假如要删除
    #drop function rand_num;

    创建存储过程

    并向表中插入数据

    #执行存储过程,往sdb_b2c_order表添加随机数据
    DELIMITER $$
    CREATE PROCEDURE insert_sdb_b2c_orders(IN START INT(10),IN max_num INT(10))  
    BEGIN  
    DECLARE i INT DEFAULT 0;   
     SET autocommit = 0;    
     REPEAT  
     SET i = i + 1;  
     INSERT INTO sdb_b2c_orders (order_id ,seller_order_id,total_amount,final_amount,source,source_name,merchant_bn ) VALUES
     (rand_string(10) ,rand_string(10),100,100,'eleme','square',(START+i));  
     UNTIL i = max_num  
     END REPEAT;  
     COMMIT;  
     END $$;
     
     
    #删除
    # DELIMITER ;
    # drop PROCEDURE insert_emp;

    调用存储过程进行插入数据

     #插入30万条数据分几次插入
     CALL insert_sdb_b2c_orders(700003,300000); 

    结果

     

    总结

    百万数据搞定,到此这篇关于MySQL如何利用存储过程快速生成100万条数据的文章就介绍到这了,更多相关MySQL用存储过程生成100万数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • MySQL 到底是如何做到多版本并发的?
    • mysql过滤复制思路详解
    • MySQL 外键(FOREIGN KEY)用法案例详解
    • Python接口自动化浅析pymysql数据库操作流程
    • MySQL事务控制流与ACID特性
    • Mysql使用存储过程快速添加百万数据的示例代码
    • MySQL去除重叠时间求时间差和的实现
    • Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
    • MySQL的全局锁和表级锁的具体使用
    • 基于Redo Log和Undo Log的MySQL崩溃恢复解析
    上一篇:论一条select语句在MySQL是怎样执行的
    下一篇:MySQL 外键(FOREIGN KEY)用法案例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySQL如何利用存储过程快速生成100万条数据详解 MySQL,如何,利用,存储,过程,