我们在开发中,有时候难免会需要大批量的数据进行一些测试,这时候我们可能首先想到的就是使用Sql语句进行循环添加数据到测试库中,但是这样效率相对来说就会慢很多。于是我们可以批量将要添加的数据先存储到临时表中,然后再分批次进行批量插入。
如下所示,我们将99999999条数据分每100000条数据进行一次插入操作(添加到测试表V_DemoTab中),具体如下所示:
--循环批量插入测试数据(插入99999999条数据)
--根据目标表(V_DemoTab)结构复制一个临时表(TempTb)
SELECT [id],
[insdate]
INTO #temp
FROM [dbo].[V_DemoTab]
WHERE 1 = 2;
--定义数据索引号
DECLARE @thisIndex INT;
SET @thisIndex = 1;
WHILE @thisIndex <= 100000000
BEGIN
INSERT #temp
(
[id],
[insdate]
)
VALUES
(@thisIndex,
--随机时间
CAST(ABS(CHECKSUM(NEWID())) % CAST(CAST('2019-01-11' AS DATETIME) - CAST('1990-01-01' AS DATETIME) AS BIGINT)
+ CAST(CAST('1990-01-01' AS DATETIME) AS BIGINT) AS DATETIME) + RAND()
);
--每10万条数据批量插入一次
IF @thisIndex % 100001 = 100000
BEGIN
INSERT [dbo].[V_DemoTab]
(
[id],
[insdate]
)
SELECT *
FROM #temp;
TRUNCATE TABLE #temp;
END
SET @thisIndex = @thisIndex + 1;
END