标题:扫描输入到txt中,新输入时检索是否重复,输入数据大了,很慢,怎么搞呀。各 ...
只看楼主
rjl1000
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-11-8
结帖率:100%
已结贴  问题点数:20 回复次数:8 
扫描输入到txt中,新输入时检索是否重复,输入数据大了,很慢,怎么搞呀。各位大佬!
扫描输入到txt中,新输入时检索是否重复,输入数据大了,很慢,怎么搞呀。各位大佬!
搜索更多相关主题的帖子: 数据 是否 检索 输入 重复 
2022-11-08 09:19
约定的童话
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:47
帖 子:190
专家分:1061
注 册:2021-8-1
得分:5 
数据库存放在哪里?txt?mdb?excel?csv?数据量有多少?
2022-11-08 09:41
rjl1000
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-11-8
得分:0 
txt中,数量每天会入力1万条。
2022-11-09 14:40
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:335
专家分:1125
注 册:2014-4-13
得分:5 
建议楼主把问题说清楚些,“扫描输入到txt中”这样的说法很难理解,对解决你的问题没有任何帮助,数据格式是什么样的,重复数据是如何定义的,如果不好描述,可以写一些例子,对数据如何操作,是从一个文件到另一个文件时整体过滤重复数据,还是每当插入数据是判断是否重复。
2022-11-09 16:14
约定的童话
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:47
帖 子:190
专家分:1061
注 册:2021-8-1
得分:0 
回复 3楼 rjl1000
建议放入sql数据库中,这样去重也快,可以直接在插入时判断是否重复
2022-11-09 18:22
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:5 
每天1万条,一个月,按30万条计算吧, 上SQL吧。
30万条记录,一般普通服务器,一条SQL查询,无索引,无缓存 的话,差不多 2秒吧
你还想怎么样?

要加快速度(
1、上平头哥家的服务器。
2、改用 C语言 开发。 这个应该没多大改观,主要是如果上平头哥的服务器就基本上可能只能 C 开发了。也有可能 能用 GO 开发。

--------------------------
一般专用SQL服务器,都要求上 多路至强,64G内存打底,SCSI阵列。用强化硬件措施来加快SQL的查询速度。
参考 12306 的优化过程,来理解硬件的重要性。


[此贴子已经被作者于2022-11-9 22:03编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2022-11-09 19:11
rjl1000
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-11-8
得分:0 
回复 4楼 jklqwe111
我采用的是这样的方式进行比较的,比较完了没有重复将数据保存在slip No.dat中,下次入力重复该过程。   

If Dir("C:\扫描入力\") = "" Then
      MkDir ("C:\扫描入力\")
   End If
   
 lj1 = "C:\扫描入力\slip No.dat"
   If Dir(lj1) = "" Then
      Open lj1 For Output As #1
      Close #1
   End If
   
   If TextBox4.Text <> "" Then
      issame = False
         Open lj1 For Binary As #1
              If LOF(1) <> 0 Then
                 ReDim da(LOF(1) - 1) As Byte
                 Get #1, , da
              End If
         Close #1
     da1 = Split(StrConv(da, vbUnicode), vbCrLf)
     For j = 0 To UBound(da1)
        If da1(j) = TextBox4.Text Then
            issame = True: Exit For
        End If
     Next j
     If issame = False Then
        Label15.Caption = "OK"
        Label15.FontSize = 14
        Image4.BackColor = vbGreen
     End If
     If issame = True Then
        Label15.Caption = "NG"
        Label15.FontSize = 14
        Image4.BackColor = vbRed
        MsgBox "slip No 重复′"
     End If
    End If
2022-11-10 09:06
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:335
专家分:1125
注 册:2014-4-13
得分:0 
最为简单实用的方法就是使用数据库了,几十上百万条数据处理起来完全没有问题,如果有不得以的原因不能使用数据库,那只能是像数据库一样建立索引文件,利用索引进行过滤,其方法不是特别的复杂,但要在性能,稳定性等方面达到或超过数据库很难,关键是麻烦,所以很少有人这么做了,毕竟是有现成的,谁还再费力的做一个呢。
2022-11-10 10:42
约定的童话
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:47
帖 子:190
专家分:1061
注 册:2021-8-1
得分:0 
回复 7楼 rjl1000
读取的时候存入字典试一下,然后判断扫描的内容是否存在...
2022-11-10 12:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510585-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.100264 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved