在資料庫效能測試與優化階段,常需產生大量測試資料。本文示範如何撰寫儲存程序,一次性批次插入 99,000 筆模擬資料至 userInfo 資料表。
CREATE TABLE [dbo].[userInfo] (
[userID] [int] IDENTITY(1,1) NOT NULL,
[roleType] [int] NULL,
[groupID] [int] NULL,
[userCode] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[userName] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[text1] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[text2] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[text3] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
CREATE PROCEDURE add_UserInfo
AS
BEGIN
DECLARE @userCode VARCHAR(30), @userName VARCHAR(30)
DECLARE @userCode_base VARCHAR(30), @count INT, @index INT
DECLARE @rand1 INT, @rand2 INT
SET @userCode_base = 'qs_'
SET @userName = 'userName'
SET @count = 100000
SET @index = 10000
WHILE @index < @count
BEGIN
SET @userCode = @userCode_base + CONVERT(VARCHAR, @index)
SET @rand1 = CONVERT(INT, RAND() * 5) -- 0-5 隨機數
SET @rand2 = CONVERT(INT, RAND() * 5)
INSERT INTO userInfo (userCode, roleType, groupID, userName, text1, text2, text3)
VALUES (@userCode, @rand1, @rand2, @userName, 'aokei kaol jof', '', 'aokei kaol jof')
SET @index = @index + 1
END
END
GO
執行 EXEC add_UserInfo 即可快速產生測試資料。實際專案中可依需求調整欄位邏輯與筆數。