如何在SQLserver中利用循环语句插入大量的数据
现在我有一张表列表名是id、username和Pwd,怎么使用for循环语句来添加呢,比如插入10000笔数据求大神啊!在线等着,用代码插入10000条随机的数据就可以了...
现在我有一张表 列表名是id 、username和 Pwd ,怎么使用for循环语句来添加呢,比如插入10000笔数据
求大神啊! 在线等着,用代码插入10000条随机的数据就可以了, 展开
求大神啊! 在线等着,用代码插入10000条随机的数据就可以了, 展开
5个回答
展开全部
这个在sqlserver里面不好做,要用到sql语言中的变量并且sql语音没有for不过有while,不过一般数据都不会这样批量输入,毕竟不是每条数据都之间都存在内在的联系。如果你真的想用for语句进行录入的话,你就用visual studio连接你的数据库用c#代码来完成这个活。
DECLARE @id INT,@username NVARCHAR(50),@Pwd NVARCHAR(50)
SET @id=0
SET @username ='kk'
SET @Pwd='12345'
WHILE @i<10000 --10000为你要执行插入的次数
BEGIN
INSERT INTO xx ( id, username,Pwd ) --xx为表名
VALUES ( @id, @username,@Pwd )
SET @i=@i+1
END
展开全部
这个在sqlserver里面比较不好做,要用到sql语言中的变量并且sql语音没有for不过有while,不过一般数据都不会这样批量输入,毕竟不是每条数据都之间都存在内在的联系。如果你真的想用for语句进行录入的话,你就用visual studio连接你的数据库用c#代码来完成这个活。
更多追问追答
追问
while也行,我是想直接生成大量的数据做测试的,不是做系统哦~用while的话具体代码怎么写呢?谢谢~
追答
DECLARE @id INT,@username NVARCHAR(50),@Pwd NVARCHAR(50)
SET @id=0
SET @username ='kk'
SET @Pwd='12345'
WHILE @i<10000 --10000为你要执行插入的次数
BEGIN
INSERT INTO xx ( id, username,Pwd ) --xx为表名
VALUES ( @id, @username,@Pwd )
SET @i=@i+1
END
一些要改的东西我已经加了注释了,不明再问我吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CREAT PROCEDURE tester
AS
BEGIN
SET NOCOUNT ON;
DECLARE @userId varchar(50)
DECLARE @count int
SET @count = 0
SELECT @count = count(*) FROM UserService_User WHERE Account like '%111%'
WHILE @count > 0
BEGIN
SELECT @userId = Id FROM UserService_User WHERE Account like '%111%'
exec UserService_RemoveUserByUserId @userId
SET @count = @count -1
END
END
说明:
1、此存储过程在SQL SERVER 2005上测试通过,值得注意的是,循环体中,语句是使用BEGIN……END包括的,而不是网络上常说的WHILE ……END WHILE结构,其他的循环语句,如LOOP ……UNTIL……END LOOP也不能通过编译,也许是版本的问题,但在SQL SERVER2005中,循环体使用BEGIN……END就可以,而不能使用网络上常说的WHILE ……END WHILE结构。
2、循环体中 UserService_RemoveUserByUserId 是一个存储过程的名称,@userId为该存储过程的参数,如果有多个参数,使用“,”分开就可以了,这也是存储过程调用另一个存储过程的一种方法。
AS
BEGIN
SET NOCOUNT ON;
DECLARE @userId varchar(50)
DECLARE @count int
SET @count = 0
SELECT @count = count(*) FROM UserService_User WHERE Account like '%111%'
WHILE @count > 0
BEGIN
SELECT @userId = Id FROM UserService_User WHERE Account like '%111%'
exec UserService_RemoveUserByUserId @userId
SET @count = @count -1
END
END
说明:
1、此存储过程在SQL SERVER 2005上测试通过,值得注意的是,循环体中,语句是使用BEGIN……END包括的,而不是网络上常说的WHILE ……END WHILE结构,其他的循环语句,如LOOP ……UNTIL……END LOOP也不能通过编译,也许是版本的问题,但在SQL SERVER2005中,循环体使用BEGIN……END就可以,而不能使用网络上常说的WHILE ……END WHILE结构。
2、循环体中 UserService_RemoveUserByUserId 是一个存储过程的名称,@userId为该存储过程的参数,如果有多个参数,使用“,”分开就可以了,这也是存储过程调用另一个存储过程的一种方法。
追问
能解释下各个字段的意思吗?为什么要调用另一个存储过程呢? 存储过程UserService_RemoveUserByUserId 不也得新创建?这个存储过程的用途是什么?
追答
你在SQL里试下就知道了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-01-23
展开全部
最好新建一个存储过程,调用其实现批量添加数据;
比如:
DECLARE @id INT,@username NVARCHAR(50),@Pwd NVARCHAR(50)
SET @id=0
SET @username ='kk'
SET @Pwd='12345'
WHILE @i<10000 --10000为你要执行插入的次数
BEGIN
INSERT INTO xx ( id, username,Pwd ) --xx为表名
VALUES ( @id, @username,@Pwd )
SET @i=@i+1
END
比如:
DECLARE @id INT,@username NVARCHAR(50),@Pwd NVARCHAR(50)
SET @id=0
SET @username ='kk'
SET @Pwd='12345'
WHILE @i<10000 --10000为你要执行插入的次数
BEGIN
INSERT INTO xx ( id, username,Pwd ) --xx为表名
VALUES ( @id, @username,@Pwd )
SET @i=@i+1
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
伪代码:
定义id,username,pwd,counter变量(如果id是identity不用定义id)
给变量赋初始值,counter赋0
while counter < 10000
begin
插入数据
各个变量重新赋值
counter++
end
定义id,username,pwd,counter变量(如果id是identity不用定义id)
给变量赋初始值,counter赋0
while counter < 10000
begin
插入数据
各个变量重新赋值
counter++
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询