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

总结

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

转载于:https://www.cnblogs.com/terrence/p/4218741.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值