批量生成10W组账号

wodelaopos 2014-09-18 01:32:19
原有数据库已经存在几十万账号,现要求生成10W组,再不重复的情况下,用.net或sql写出具体实现,第一次做这个东西,拜托各位大神
...全文
943 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
祥子爱游戏 2014-09-21
  • 打赏
  • 举报
回复
规则是最重要的。要符合规则。
  • 打赏
  • 举报
回复
不断重复重复 再重复!可以自己定制规则,就不会重复太多次了!
  • 打赏
  • 举报
回复
一次循环添加10W啊!再一次把所有数据查出进行筛选,重复的删掉,再随机生成继续添加!
sp1234_maJia 2014-09-19
  • 打赏
  • 举报
回复
如果“插入数据之前先查询是否存在不就避免重复了”,那么你可能用3个小时也干不完这个插入10W账号的事情。如果仅仅在“放号区间段”表里查询一次,那么你可能用3分钟就干完了这个插入10W账号的事情。 这需要一点点数据库编程经验。
sp1234_maJia 2014-09-19
  • 打赏
  • 举报
回复
引用 楼主 wodelaopos 的回复:
原有数据库已经存在几十万账号,现要求生成10W组,再不重复的情况下,用.net或sql写出具体实现,第一次做这个东西,拜托各位大神
不知道你这个需求是某个培训班的老师想出来的,还是正规的大项目这样做的。 正规的大项目,比如即时通讯系统,它“放号”是有一个业务逻辑设计的。在一个数据表里记录了每一次放号的账号区间段。因此你需要先了解这个实情,再来设计流程。绝不是胡乱塞入10W个账号。
mong32500 2014-09-19
  • 打赏
  • 举报
回复
插入数据之前先查询是否存在不就避免重复了
以夕阳落款 2014-09-19
  • 打赏
  • 举报
回复
insert插入,用select count(*)来查找是否有重复
淡淡的活着 2014-09-19
  • 打赏
  • 举报
回复
定义与前面生成账号的规则不同的规则生成 就不会重复了 当然 生成前判断下是否存在还是需要的
zbdzjx 2014-09-19
  • 打赏
  • 举报
回复
A0...0000001~A0...0100000 中间要有几个0可以自己查已有记录后再判断一下。前面的A也可以替换成其他字母或数字。
j911 2014-09-19
  • 打赏
  • 举报
回复
.net 没有try catch ? c++builder 里我是这么做,写好生成规则,插入语句用 try catch 包起来,插入成功 count + 1,否则 continue,直到插完. 前提是,表里有主键 用户名,重复的插入会报错. 如果用户名没主键,select 查询,判断是否存在再插入会非常慢,10万条无法忍受,除非你是维护阶段干这种事请. 还可以这样,select * 全部查询出来,将用户名保存在字典里。 然后还是一个循环,不停生成,但是不需要select 查询名字是否存在,而是查字典看名字是否存在,这样能快的多。
莫_问 2014-09-19
  • 打赏
  • 举报
回复
引用 19 楼 sp1234_maJia 的回复:
如果“插入数据之前先查询是否存在不就避免重复了”,那么你可能用3个小时也干不完这个插入10W账号的事情。如果仅仅在“放号区间段”表里查询一次,那么你可能用3分钟就干完了这个插入10W账号的事情。 这需要一点点数据库编程经验。
三个小时干不完,可以10个小时,反正中国不缺人,哈哈
dongmusic 2014-09-18
  • 打赏
  • 举报
回复
可以自己定义规则,然后配合随机数来生成10万个帐号。
qzyf1992 2014-09-18
  • 打赏
  • 举报
回复
引用 8 楼 wodelaopos 的回复:
[quote=引用 5 楼 ayanamireizero 的回复:] 比如账号名字段:LogName 密码:Password 表名:User
public string GetGuid()
        {
            System.Guid guid = new Guid();
            guid = Guid.NewGuid();
            return guid.ToString().ToUpper();
        }

for(int i = 1;i<=100000;i++)
{
    var model = new User();
    User.LogName = GetGuid();
    User.Password = "这里可以用GUID,也可以全部用一样的,如果要做加密也可以加密";
    DC.User.InsertOnSubmit(model);
}
DC.SubmitChanges();
这里直接用linq to sql了,如果用EF,ADO自行修改
如果是用第二种方法:每一组账号都要和原数据库比对,避免重复呢,怎么写?求指点[/quote] 先把数据库里所有的账号查出来 然后再去重 一个个去重的性能是最低的
ayanamireizero 2014-09-18
  • 打赏
  • 举报
回复
上面少了个) result.Count()==0 少了个等号....
ayanamireizero 2014-09-18
  • 打赏
  • 举报
回复
引用 8 楼 wodelaopos 的回复:
[quote=引用 5 楼 ayanamireizero 的回复:] 比如账号名字段:LogName 密码:Password 表名:User
public string GetGuid()
        {
            System.Guid guid = new Guid();
            guid = Guid.NewGuid();
            return guid.ToString().ToUpper();
        }

for(int i = 1;i<=100000;i++)
{
    var model = new User();
    User.LogName = GetGuid();
    User.Password = "这里可以用GUID,也可以全部用一样的,如果要做加密也可以加密";
    DC.User.InsertOnSubmit(model);
}
DC.SubmitChanges();
这里直接用linq to sql了,如果用EF,ADO自行修改
如果是用第二种方法:每一组账号都要和原数据库比对,避免重复呢,怎么写?求指点[/quote] 假设账号已经OK了,不管你随机字母+数字还是GUID string logName; //这个是生成的账号 //生成账号,省略 var result = DC.User.Where(m=>m.LogName == logName; if(result.Count()=0) { //添加账号 }
於黾 2014-09-18
  • 打赏
  • 举报
回复
引用 8 楼 wodelaopos 的回复:
如果是用第二种方法:每一组账号都要和原数据库比对,避免重复呢,怎么写?求指点
select count(*) from table where 账号='账号' 去数据库里查一下看是否存在
wodelaopos 2014-09-18
  • 打赏
  • 举报
回复
引用 5 楼 ayanamireizero 的回复:
比如账号名字段:LogName 密码:Password 表名:User
public string GetGuid()
        {
            System.Guid guid = new Guid();
            guid = Guid.NewGuid();
            return guid.ToString().ToUpper();
        }

for(int i = 1;i<=100000;i++)
{
    var model = new User();
    User.LogName = GetGuid();
    User.Password = "这里可以用GUID,也可以全部用一样的,如果要做加密也可以加密";
    DC.User.InsertOnSubmit(model);
}
DC.SubmitChanges();
这里直接用linq to sql了,如果用EF,ADO自行修改
如果是用第二种方法:每一组账号都要和原数据库比对,避免重复呢,怎么写?求指点
叫我 Teacher 周 2014-09-18
  • 打赏
  • 举报
回复
看你的需求咯,主要是你的帐号生成都有些什么限制
於黾 2014-09-18
  • 打赏
  • 举报
回复
取GUID是个办法 不过如果用户名有长度限制,恐怕还是会有问题 1.放不下 2.有重复
ayanamireizero 2014-09-18
  • 打赏
  • 举报
回复
比如账号名字段:LogName 密码:Password 表名:User
public string GetGuid()
        {
            System.Guid guid = new Guid();
            guid = Guid.NewGuid();
            return guid.ToString().ToUpper();
        }

for(int i = 1;i<=100000;i++)
{
    var model = new User();
    User.LogName = GetGuid();
    User.Password = "这里可以用GUID,也可以全部用一样的,如果要做加密也可以加密";
    DC.User.InsertOnSubmit(model);
}
DC.SubmitChanges();
这里直接用linq to sql了,如果用EF,ADO自行修改
加载更多回复(4)

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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