SqlServer批量插入测试数据

        我们在开发中,有时候难免会需要大批量的数据进行一些测试,这时候我们可能首先想到的就是使用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
发布了293 篇原创文章 · 获赞 31 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qubernet/article/details/86289967
今日推荐