sql语句插入百万测试数据

Easter79
• 阅读 629

开发的过程中,很多时候我们需要插入百万数据来测试功能和性能,今天我来教大家最简单的插入方法

-----------------1、新建表---------------------

CREATE TABLE [student] (
[ID] [int]  IDENTITY (1, 1)  NOT NULL,
[sid] [varchar]  (20) NOT NULL,[age] [int]  NOT NULL,
[name] [nvarchar] (50) NOT NULL
)

-----------------2、插入百万数据---------------------

DECLARE @LN VARCHAR(300),@MN VARCHAR(200),@FN VARCHAR(200)
DECLARE @LN_N INT,@MN_N INT,@FN_N INT
SET @LN='李王张刘陈杨黄赵周吴徐孙朱马胡郭林何高梁郑罗宋谢唐韩曹许邓萧冯曾程蔡彭潘袁于董余苏叶吕魏蒋田杜丁沈姜范江傅钟卢汪戴崔任陆廖姚方金邱夏谭韦贾邹石熊孟秦阎薛侯雷白龙段郝孔邵史毛常万顾赖武康贺严尹钱施牛洪龚'
SET @MN='德绍宗邦裕傅家積善昌世贻维孝友继绪定呈祥大正启仕执必定仲元魁家生先泽远永盛在人为任伐风树秀文光谨潭棰'
SET @FN='丽云峰磊亮宏红洪量良梁良粮靓七旗奇琪谋牟弭米密祢磊类蕾肋庆情清青兴幸星刑'
SET @LN_N=LEN(@LN)
SET @MN_N=LEN(@MN)
SET @FN_N=LEN(@FN)
DECLARE @TMP VARCHAR(1000),@I INT
SET @I=1
WHILE @I<1000000
BEGIN
    SET @TMP=CAST(SUBSTRING(@LN,CAST(RAND()*@LN_N AS INT),1) AS VARCHAR)
    SET @TMP=@TMP+CAST(SUBSTRING(@MN,CAST(RAND()*@MN_N AS INT),1) AS VARCHAR)
    SET @TMP=@TMP+CAST(SUBSTRING(@FN,CAST(RAND()*@FN_N AS INT),1) AS VARCHAR)
    INSERT INTO student(sid,age,name)VALUES('2018-'+convert(varchar,@I),cast(floor(rand() * 50+18) as int),@TMP)SET @I=@I+1
end

-----------------统计---------------------

select COUNT(ID) from student

-----------------查看---------------------

select top 100 * from student

-----------------删除表---------------------

drop table student
点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
sql循环语句在update中的应用
sql循环语句在update中的应用在实际的开发场景中,我们有时候要对表中的所有数据进行批量修改,但是当数据量十分盘庞大时,比如几百万几千万条数据,这时候我们执行update语句的话就会长时间锁住该表。这样非常容易造成死锁现象(在企业中DBA肯定是不允许执行这种sql语句的)。所以为了避免出现这种问题,我们在执行批量
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Excel数据转化为sql脚本
在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况。这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库。1在数据前插入一列单元格,用来拼写sql语句。 具体写法:"insertintot\_student(id,name,age,class)value("&B2&",'"&C2&"',"&D2&"
Wesley13 Wesley13
3年前
Mysql_项目1:group by和having的使用(删除重复的电子邮箱)
项目1:查找重复的电子邮箱创建email表,并插入如下三行数据\创建表CREATETABLEemail(idINTNOTNULLauto_increment,emailVARCHAR(20)NOTNULL,PRIMARYKEY(id));\插入数据
Wesley13 Wesley13
3年前
mysql字段默认值不生效的问题解决(上)
在项目中使用mybatis做为持久层框架,mysql数据库。项目上线前,DBA要求我们将每张数据库表中的字段都设置默认值和notnull。之前项目中有一些insert语句是将表中所有字段都列出来,然后把它做为一个通用的插入语句来使用。举个简单的例子:假如一张数据库表blog中有如下几个字段:id,title,content,author,除id外,每个字段
Stella981 Stella981
3年前
ElasticSearch 使用不同表结构存储时间序列数据的查询效率分析
这里我们使用和之前完全相同的测试数据,来测试elasticsearch存储时间序列的表结构选择问题。一个点一个doc的表结构同样我们以最简单的表结构开始。在elasticsearch中,先要创建index,然后index下有mapping。所谓的mapping就是表结构的概念。建表的配置如下:settings
Wesley13 Wesley13
3年前
mysql 之排序显示行号
1:首先新建一个表并插入以下测试数据,如图!(https://oscimg.oschina.net/oscnet/c982858771aa6271ae4b67a29ffcaa73270.png)2:查询显示行号语句如下    select@r:@r1asro
Wesley13 Wesley13
3年前
MySQL 24小时入门笔记(3),插入和删除,删库到跑路
MySQL24小时入门笔记插入INSERTINSERT用法非常简单。现在我们有表students如下。列名类型约束idintprimarykeynamechar(16)NOTNULL向里面插入一条学号为1,姓名为学姐的学生,只需要写如下SQ
Wesley13 Wesley13
3年前
MySQL清空表漏洞!
MySQL有一个特点,当某个字段是字符串时,如果你的sql传数字它会尝试把这一列所有值转换成数字进行匹配,如果不是数字则会转换为0.创建表test,并插入测试数据CREATETABLEtest(idvarchar(10)NOTNULL,PRIMARYKEY(id));
Wesley13 Wesley13
3年前
MySQL 快速创建千万级测试数据
备注:此文章的数据量在100W,如果想要千万级,调大数量即可,但是不要大量使用rand()或者uuid()会导致性能下降背景在进行查询操作的性能测试或者sql优化时,我们经常需要在线下环境构建大量的基础数据供我们测试,模拟线上的真实环境。废话,总不能让我去线上去测试吧,会被DBA砍死的创建测试数据的方式
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k