zoukankan      html  css  js  c++  java
  • MySQL随机字符串函数批量插入数据

     

     简单举个例子:

    drop table if exists demo1
    
    create table demo1
    (
        id int primary key auto_increment,
        name varchar(50)
    )
    desc demo1
    
    -- 随机字符串函数用于插入数据
    drop function if exists rand_str;
    
    delimiter //
    create function rand_str(size int,type int)
    returns varchar(255)
    begin
        declare seed varchar(255) ;
        declare seed_num varchar(255) default '1234567890';
        declare seed_str varchar(255) default 'qwertryuiopasdfghjklzxcvbnm';
        declare ret varchar(255) default '';
       declare i int default 0;
       -- 为seed 赋值 首先判断类型需要得到的是数字
      -- 还是字符串0为数字 1为字符串
      -- 都不是的话那则拼接数字与字符串 concat();
    set seed = case type when 0 then seed_num when 1 then seed_str else concat(seed_num,seed_str) end; -- 循环拼接字符串 随机得到的数字之后截取字符串
      -- 循环一次则截取一个 条件小于参数size
    while i < size do set ret = concat(ret, substring(seed, floor(length(seed) * rand() + 1), 1)); set i = i + 1; end while;   -- 最后返回 return ret; end // delimiter ; -- 使用存储过程插入批量数据 drop procedure if exists pro_demo; delimiter // create procedure pro_demo( num int ) begin -- 循环语句写法 while end while; repeat .. set autocommit = 0; set @i=0; repeat set @i=@i+1; insert into demo1(name) values(rand_str(7,5)); until @i =num end repeat; if @i % 10000 = 1 then commit; end if; commit; set autocommit = 1; end // delimiter ; -- set @num = 100000; call pro_demo(@num); select * from demo1

    这里了解一下存储过程不建议使用

    1、难以调试,难以维护

    2、业务逻辑跟数据库耦合度过高,不便于迁移

    3、对数据的压力过大,需要分拆

    4、MySQL 对存储过程的支付有些弱鸡

  • 相关阅读:
    学习Ember遇到的一些问题
    angular学习资源
    电话号码验证(正则)
    使用 Bitbucket Pipelines 持续交付托管项目
    zookeepercli
    如何用 JIRA REST API 创建 Issue
    Maven如何传递系统属性变量到TestNG
    基于WebDriver&TestNG 实现自己的Annotation @TakeScreenshotOnFailure
    25+ Useful Selenium Web driver Code Snippets For GUI Testing Automation
    Selenium WebDriver 之 PageObjects 模式 by Example
  • 原文地址:https://www.cnblogs.com/dzcici/p/9673015.html
Copyright © 2011-2022 走看看