如何快速的向数据库中写入大量随机不重复的十位码
我生成的数据需要是随机的无规则的十位数字,类似数码防伪之类的数码,看不出规则无序的。而且数据库中已经有了数据,要保证新生成的随机数都不重复,今后还要向数据库中插入大量这样的数字。
希望解决的问题
1)生成这样不和已有数据重复的随机数的算法
2)如何将大批量(比如1百万条)的数据快速的写入数据库。
有没有好的解决办法建议,谢谢大家!
问题点数:100、回复次数:15Top
1 楼redlion963(狮子)回复于 2003-11-04 01:57:06 得分 0
先生成10位随机数,存成字符串,
在用SQL语句到数据库查找,如果有重新生成,如果没有则存入数据库
10位随机数,重复的可能性,应该不会让你试很多次的
在一种方法,可以把数据库10随机数那个字段,读到内存中,就不用SQL语句查数据库了
这要看你的程序什么样子的了,机器内存是不是很大,综合考虑
Top
2 楼dldl(做饭我一直用雕牌)回复于 2003-11-04 09:15:22 得分 20
1、c#中有对数据的随机产生,你可以把1到n个连续数存入属组中,然后随机从数组中取出一个数,然后把最后的数和选中的数交换。以此类推,就可以生成随机数咧!
2、把大批量的数据写入数据库,还是用DTS的快!Top
3 楼xamcsdn2(知了)回复于 2003-11-04 09:18:27 得分 0
微软的数据库有个全球唯一码。你可以找一下相关资料
Top
4 楼perilla(紫苏)回复于 2003-11-04 09:50:48 得分 0
To redlion963(狮子 :我不是只用一部分数,而是每次需要生成1000万个,需要经常性的生成,每次生成的数据均需要写在数据库中,下次再生成的数不能和他们重复,这是一个持续性的过程,最后可能用到100万万个。
To xamcsdn2:微软的数据库有个全球唯一码好像是128位的,我现在只能用10位数字,不能用。
Top
5 楼running_su(努力中)回复于 2003-11-04 10:29:07 得分 10
up,難啊Top
6 楼realsnow(真雪无香/抵制日货(菜C++鸟))回复于 2003-11-04 10:36:32 得分 10
gz
markTop
7 楼atlove(美女程序员)(*****)回复于 2003-11-04 12:11:33 得分 10
最快的方法,通过程序生成10位随机数列表,写到文本文件;再将其导入数据库中Top
8 楼perilla(紫苏)回复于 2003-11-04 22:45:44 得分 0
upTop
9 楼wxy0401(abc)回复于 2003-11-04 23:59:21 得分 10
有个很苯、也许很实用的方法。
生成一个数据表,第一字段为将要生成的数据列,第二个字段为辅助列,二个字段的格式均为10位的数字。
第一个字段生成从0到底9,999,999,999的数字,第二个字段用随机数填上,然后对第二字段排序,排好序后第一字段就是你要的数列了,没有重复、没有规律。每次取数可从上往下顺序取数。Top
10 楼eric88(保持共产党员先尽兴)回复于 2003-11-05 00:56:57 得分 10
Drop Sequence TABLE_SEQ;
Create Sequence TABLE_SEQ Increment By 1
Start with 1 MaxValue 9999999999999999 MinValue 1 NoCycle;
Top
11 楼perilla(紫苏)回复于 2003-11-05 14:48:41 得分 0
to :第二个字段用随机数填上,然后对第二字段排序,:生成这么一大堆随机数加上排序的时间不是太恐怖了?Top
12 楼wxy0401(abc)回复于 2003-11-06 00:44:16 得分 0
与每生成一个随机数都到数据库查找的方法相比,这更适和你的要求,(每次需要生成1000万个,最后可能用到100万万个。)
或者你用此方法生成若干2-3位数的随机数队列,然后用这些数列组合成10的数。Top
13 楼wxy0401(abc)回复于 2003-11-06 00:52:47 得分 20
这个问题可转到 “专题开发”-》“数据结构与算法”中去,那里牛人很多.Top
14 楼redlion963(狮子)回复于 2003-11-06 02:36:08 得分 10
或许有这么个算法,每次即将生成的随机数都不会和以前的重复,这样就不用去数据库对比了,而且一次要生成1000万个Top
15 楼noremorse()回复于 2003-11-06 09:58:12 得分 0
10位数字的空间只有 10^10.
你一次生成10^7个还要经常生成,是很容易重复的。很难解决。Top




