请billpu帮忙,那天你回答我的问题我已结帖,不过还是有点问题不太明白,请不吝赐教!!!

bjakun 2006-06-22 11:18:23
那天您回答我的问题给我的思路正是我想要的,但是还有有些不太明白,请不吝赐教。我想给我的数据库的表通过执行SQL脚本在服务器端插入10万条记录,我的这个数据表生成的SQL脚本如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Student_User]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Student_User]
GO

CREATE TABLE [dbo].[Student_User] (
[S_ID] [int] NOT NULL ,
[S_UserName] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[S_PassWord] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[S_PWD_Question] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_PWD_Answer] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Email] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[S_RealName] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Sex] [nvarchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Area] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_City] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Postcode] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Address] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Tel] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Mobile] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_CertifiType] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_CertifiNo] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_AddTime] [smalldatetime] NOT NULL ,
[S_LastLogin] [smalldatetime] NOT NULL ,
[S_State] [bit] NOT NULL ,
[S_Money] [money] NOT NULL
) ON [PRIMARY]
GO

其中,S_ID、S_UserName、S_PassWord、S_Email、S_AddTime、S_LastLogin、S_State、S_Money字段不能为空,我希望随机生成,谢谢。
...全文
104 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjakun 2006-06-22
  • 打赏
  • 举报
回复
S_UserName字段是用户名,S_PassWord是密码,用户名字段最好是Success000001——Success100000的顺序排列,密码字段随机生成6位或者是8位就可以了,不用任何的加密算法。谢谢了!!!
paoluo 2006-06-22
  • 打赏
  • 举报
回复
看短消息,:)
bjakun 2006-06-22
  • 打赏
  • 举报
回复
我搞了三四天了,我都快支持不下去的时候是您帮了我,你的MSN是多少?真的太感谢了!!!

paoluo 2006-06-22
  • 打赏
  • 举报
回复
你測試下就知道了,應該是沒有問題的。

現在不能上QQ了,只用MSN了。
bjakun 2006-06-22
  • 打赏
  • 举报
回复
谢谢!我会马上结帖!!!
还有,这个Student_User表之前有5000条记录,我用如下的SQL语句就可以了吗?:

Select TOP 100000 ID=Identity(Int,1,1) Into #T From syscolumns A,syscolumns B
Insert Student_User(S_ID,S_UserName,S_PassWord,S_Email,S_AddTime,S_LastLogin,S_State,S_Money)
Select
ID,
'Success'+Right(1000000+ID,6),Left(Newid() ,8),
Left(Newid() ,8)+'@sohu.com',
DateAdd(dd,UNICODE(NEWID()),'2006-01-01'),
DateAdd(dd,UNICODE(NEWID()),'2006-01-01'),
1,
UNICODE(NEWID())
From #T

Select * From Student_User

GO
Drop Table #T

我可以加你的QQ吗?我的QQ是:284846087,太感谢了!!!帮了我的大忙!!!
paoluo 2006-06-22
  • 打赏
  • 举报
回复
我寫的是插入紀錄啊。

你可以測試一下,我測試OK的。
bjakun 2006-06-22
  • 打赏
  • 举报
回复
不是的,我这个是追加记录,也就是希望Insert……
zlp321002 2006-06-22
  • 打赏
  • 举报
回复
/*给你一个例子:

调用方法:
如:生成"ZLP010"为前导码、8位后导码、12位随机密码、50条记录。表
P_AutoGenerUserInfo 'TEST','ZLP010',8,12,50
*/

Create Proc P_AutoGenerUserInfo
@TableName varchar(20),
@RuleCode varchar(20),
@RuleCodeCount int,
@PassWordLength int,
@Count int
as
Begin
--如果用户表不存在,创建用户表
declare @s varchar(2000),@RuleCodeString varchar(20),@i int
declare @RandValue varchar(50),@ZeroString varchar(50)
select @i=1,@ZeroString='',@RuleCodeString=''
while @i<=@RuleCodeCount
begin
set @ZeroString=@ZeroString+'0'
set @i=@i+1
end
set @s=' if exists (select * from sysobjects where xtype=''u'' and status>=0 and name = '''+@TableName+''')'+char(13)
set @s=@s+' drop table '+@TableName+' '+char(13)
set @s=@s+' CREATE TABLE '+@TableName+'(用户名 varchar(20),密码 varchar(20))'
exec(@s)

set @i=1
if @@Error=0
begin
while @i<=@Count
begin
select @RuleCodeString=@RuleCode+left(@ZeroString,@RuleCodeCount-len(@i))+cast(@i as varchar(10))
--生成@PassWordLength位随机密码
select @RandValue=right(convert(numeric(18,12),rand()),@PassWordLength)
--生成6位随机密码中,第一位不为0
--select @RandValue=right(convert(numeric(18,12),rand()),@PassWordLength)
-- where substring(right(convert(numeric(18,12),rand()),@PassWordLength),1,1)<>0
--如果需要所有用户密码不能相同,则需要锁表,判断密码是否存在效率不高.如下:
--IF EXISTS(SELECT * FROM @TableName WITH(XLOCK,PAGLOCK) WHERE 密码=@RandValue)
exec('insert '+@TableName+' values ('''+@RuleCodeString+''','''+@RandValue+''')')
set @i=@i+1
end

end

End

GO
paoluo 2006-06-22
  • 打赏
  • 举报
回复
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Student_User]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Student_User]
GO
CREATE TABLE [dbo].[Student_User] (
[S_ID] [int] NOT NULL ,
[S_UserName] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[S_PassWord] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[S_PWD_Question] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_PWD_Answer] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Email] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[S_RealName] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Sex] [nvarchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Area] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_City] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Postcode] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Address] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Tel] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_Mobile] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_CertifiType] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[S_CertifiNo] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[S_AddTime] [smalldatetime] NOT NULL ,
[S_LastLogin] [smalldatetime] NOT NULL ,
[S_State] [bit] NOT NULL ,
[S_Money] [money] NOT NULL
) ON [PRIMARY]
GO
Select TOP 100000 ID=Identity(Int,1,1) Into #T From syscolumns A,syscolumns B
Insert Student_User(S_ID,S_UserName,S_PassWord,S_Email,S_AddTime,S_LastLogin,S_State,S_Money)
Select
ID,
'Success'+Right(1000000+ID,6),Left(Newid() ,8),
Left(Newid() ,8)+'@sohu.com',
DateAdd(dd,UNICODE(NEWID()),'2006-01-01'),
DateAdd(dd,UNICODE(NEWID()),'2006-01-01'),
1,
UNICODE(NEWID())
From #T

Select * From Student_User

GO
Drop Table #T


其中S_State不是隨機生成的,全部給的1

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧