SQL Server创建随机测试数据

我们在做数据仓库开发的过程中,经常需要插入大量的测试数据来测试数据库查询性能和计算占用的存储空间等。本文主要介绍下不借用第三方的工具在数据库中直接生成大量的测试数据。

需求

  1. 每一行包含5个日期字段和一个10个字符的字符串作为主键;
  2. 所有的日期应该是在从今天开始2年前的数据;
  3. 每一行所有的日期应该是不同的1;
  4. 可以按照主键和日期字段创建索引。

创建测试表

CREATE TABLE dbo.TestTableSize
( MyKeyField VARCHAR(10) NOT NULL,
  MyDate1 DATETIME NOT NULL,
  MyDate2 DATETIME NOT NULL,
  MyDate3 DATETIME NOT NULL,
  MyDate4 DATETIME NOT NULL,
  MyDate5 DATETIME NOT NULL )

生成测试代码

DECLARE @RowCount INT
DECLARE @RowString VARCHAR(10)
DECLARE @Random INT
DECLARE @Upper INT
DECLARE @Lower INT
DECLARE @InsertDate DATETIME
SET @Lower = -730
SET @Upper = -1
SET @RowCount = 0
WHILE @RowCount < 3000000
BEGIN
    SET @RowString = CAST(@RowCount AS VARCHAR(10))
    SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
    SET @InsertDate = DATEADD(dd, @Random, GETDATE())
    INSERT INTO TestTableSize (MyKeyField ,MyDate1 ,MyDate2 ,MyDate3 ,MyDate4 ,MyDate5)
    VALUES (REPLICATE(‘0‘, 10 - DATALENGTH(@RowString)) + @RowString , @InsertDate ,DATEADD(dd, 1, @InsertDate) ,DATEADD(dd, 2, @InsertDate) ,DATEADD(dd, 3, @InsertDate) ,DATEADD(dd, 4, @InsertDate))
    SET @RowCount = @RowCount + 1
END

总结

本文只是提出方法的简要概述,以插入随机测试数据到数据库表。另外提出是计算一个随机数,以及基于随机偏移随机化数据输入的方法。这可能不是创建一个随机的数据集的最佳方式,如果你没有任何流行的第三方工具,它确实是个不错的选择。

时间: 2024-10-11 21:38:07

SQL Server创建随机测试数据的相关文章

SQL Server中生成测试数据

原文:SQL Server中生成测试数据 简介      在实际的开发过程中.很多情况下我们都需要在数据库中插入大量测试数据来对程序的功能进行测试.而生成的测试数据往往需要符合特定规则.虽然可以自己写一段程序来进行插入数据,但每一个项目就写一个插入数据的程序并不明智.本文主要介绍使用VS2010的数据生成计划在SQL Server中生成测试数据.   生成测试数据的方法      1.手动编辑           在开发过程中,非常少量的数据可以手动插入.这个方法的缺点可想而知-.插入100条数

sql server 创建内联表值函数

表值函数就是返回table 的函数使用它可以方便的进行查询的处理 创建的代码如下: create FUNCTION returunclassfirstlist(  -- Add the parameters for the function here )RETURNS TABLE ASRETURN ( -- Add the SELECT statement with parameter references here select * from classfirst;) 我们在使用创建的函数的时

(转)SQL Server创建索引

什么是索引拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音.笔画.偏旁部首等排序的目录(索引),我们可以选择按拼音或笔画查找方式,快速查找到需要的字(词).同理,SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度.? SQL Server中的数据也是按页( 4KB )存放? 索引:是SQL Server编排数据的内部方法.它为

SQL Server创建存储过程(转载)

什么是存储过程? q       存储过程(procedure)类似于C语言中的函数 q       用来执行管理任务或应用复杂的业务规则 q       存储过程可以带参数,也可以返回结果 q       存储过程可以包含数据操纵语句.变量.逻辑 控制语句等 存储过程的优点 (1)执行速度快. 存储过程创建是就已经通过语法检查和性能优化,在执行时无需每次编译. 存储在数据库服务器,性能高. (2)允许模块化设计. 只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次.存储

SQL Server创建LinkServer

USE [master] GO /****** Object: LinkedServer [xxx_LNK] Script Date: 2014/7/7 17:04:13 ******/ EXEC master.dbo.sp_addlinkedserver @server = N'xxx_LNK', @srvproduct=N'xxx_LNK', @provider=N'SQLNCLI', @datasrc=N'xxx.xx.xxx.xx', @catalog=N'CMD' /* For sec

ArcSDE SQL Server 创建地图数据库

1.安装并破解: ArcGIS 10.2 ArcSDE 10.2 Sql Server 2008 R2 本文重点关注Sql Server和ArcSDE配置问题,安装破解过程略. 2.配置Sql Server,启用sa账号 (1)启用账户登录:点数据库属性,选安全性,在右边选中“SQL Server 和 Windows 身份验证模式” (2)启用sa账号 依次双击: 安全性 -> 登录名 -> sa,在弹出对话框中,点左侧“状态”,然后在右侧选中“授予”和“启用”.可以在常规选项卡中设置密码.

SQL Server创建索引(转)

什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音.笔画.偏旁部首等排序的目录(索引),我们可以选择按拼音或笔画查找方式,快速查找到需要的字(词). 同理,SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度. ?????????? SQL Server中的数据也是按页( 4KB )存放 ?????????? 索引:是

SQL Server 创建水平分布式数据库尝试

创建水平分布式数据库,需要分两步实现:划分子集和对子集进行并集操作.分布式数据库的优势是:IO分散,便于快速读取数据,劣势是消耗大量的网络带宽资源. 划分子集是将原始表水平切分成若干个较小的成员表,每一个成员表都是全集的一个划分(各子集的并集是全集,其交集是空集).每个成员表包含与原始表相同数量的列,并且每一列具有与原始表中的相应列同样的特性(如数据类型.大小.排序规则),水平切分原始表,也叫做数据库水平分片,sharding.在查询时,为了实现SQLServer内部水平分片对用户透明,必须利用

SQL Server创建用户并分配权限

在服务器端,创建数据库,并创建用户和权限: 1.创建用户: 用管理员用户打开SQLServer管理器,安全性--登录名,右键新建用户. 添加:登录名:user1,和SQL Server身份密码.去掉“强制实施密码策略”. 选择默认数据库,默认语言为简体中文. 在服务器角色页面:选择Public. 在用户映射页面:选择数据库:如Data. 在状态页面:选择授予,已启用.点击确定.用户创建已经完成,只有初级的权限. 2.分配制定数据库的访问权限: 用管理员用户,制定数据库Data,属性--权限,为u