標籤:
我們在做資料倉儲開發的過程中,經常需要插入大量的測試資料來測試資料庫查詢效能和計算佔用的儲存空間等。本文主要介紹下不借用第三方的工具在資料庫中直接產生大量的測試資料。
需求
- 每一行包含5個日期欄位和一個10個字元的字串作為主鍵;
- 所有的日期應該是在從今天開始2年前的資料;
- 每一行所有的日期應該是不同的1;
- 可以按照主鍵和日期欄位建立索引。
建立測試表
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
總結
本文只是提出方法的簡要概述,以插入隨機測試資料到資料庫表。另外提出是計算一個隨機數,以及基於隨機位移隨機化資料輸入的方法。這可能不是建立一個隨機的資料集的最佳方式,如果你沒有任何流行的第三方工具,它確實是個不錯的選擇。
SQL Server建立隨機測試資料