sqlserver2019 单表插入一亿条数据,由存储过程执行该过程
新建表:
CREATE TABLE [dbo].[ceshi](
[ID] [int] IDENTITY(1,1) NOT NULL,
[name] nchar NULL,
[sort] nchar NULL,
[createtime] [datetime] NULL,
[createby] nvarchar NULL,
CONSTRAINT [PK_ceshi] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
存储过程:
CREATE PROCEDURE [dbo].[xunhuanshuju]
AS
BEGIN
declare @n int =100000000;
DECLARE @RandomStr VARCHAR(100), @CharPool NVARCHAR(789) --@RandomStr是每次随机的字符累加的值,@CharPool是产生随机字符的字符序列
DECLARE @Idx INTEGER, @Counter INTEGER – @Idx是循环次数,@Counter 是产生随机字符的位置
select @CharPool=name from baijiaxing --设置随机序列
SET @Idx = 1 --循环初始值
SET @RandomStr = ‘’ – 随机字符串初始值
while @n >= 0
begin
HERE:
SET @Counter = CAST(RAND() * 1263 / 1.61 AS INTEGER) --产生随机字符位置 (0-62的整数)
IF @Counter < 1 GOTO HERE – 如果@Counter = 0 就重新生成随机数
SET @RandomStr = SUBSTRING(@CharPool, @Counter , convert(int,round(rand()*2+2.0,0))) --在随机序列中找到生成的随机位置的字符
–select @RandomStr
INSERT INTO ceshi([name],[sort] ,[createtime] ,[createby])VALUES ( @RandomStr,
convert(int,round(rand()*2+10000.0,0)),
convert(char(24),getdate(),121),‘sa’)
set @n=@n-1
end
END
存储过程中,随机字符是我在网上找到的百家姓搞到数据库的,你自己可以随意放数据
实际在数据库中执行过,18分钟插入了600万