Foxtable(狐表)用户栏目专家坐堂 → 请教快速合并文本文件


  共有1653人关注过本帖树形打印复制链接

主题:请教快速合并文本文件

帅哥哟,离线,有人找我吗?
hbhb
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
请教快速合并文本文件  发帖心情 Post By:2017/4/17 10:30:00 [只看该作者]

大师:帮助中的编码合并文本文件,10万行数据太慢了,有无硬货?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/17 10:35:00 [只看该作者]

 1、合并的时候,不要触发datacolchanged、DataRowAdded事件;

 

 2、不要在代码中使用find函数查找数据;

 

 3、你要确定,是合并的过程慢,还是说保存的过程慢。

 

请发送实例测试。


 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2017/4/17 11:58:00 [只看该作者]

我不保存,就写进临时表,见实例。有何办法不长征,快马加鞭到延安,建立新中国,解放全人类?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目22.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/17 12:02:00 [只看该作者]

If DataTables.Contains("dtkb") = False  Then
    Dim dtb As New DataTableBuilder("dtkb")
    dtb.AddDef("_Identify", Gettype(Integer))
    dtb.AddDef("_SortKey", Gettype(Integer))
    dtb.AddDef("_Locked", Gettype(Boolean))
    For n As Integer = 0 To 100
        dtb.AddDef("F" & n,Gettype(String), 100)
    Next
    dtb.Build()
End If
DataTables("dtkb").DataRows.Clear
Dim dlg As new OpenFileDialog
dlg.Filter = "文本文件|*.txt"

If dlg.ShowDialog = DialogResult.OK Then
   
    Dim st As Date = Date.Now
    '要测试耗时的代码
   
   
    Dim strs As String = FileSys.ReadAllText(dlg.FileName)
    strs = strs.Replace(vblf,"")
    Dim rs() As String = strs.Split(vbcr)
    DataTables("dtkb").StopRedraw
    For i As Integer = 0 To rs.Length - 1
        'Dim cs() As String = rs(i).Split(vbtab)
        Dim cs() As String = rs(i).Split(",")
        Dim dr As DataRow = DataTables("dtkb").Addnew()
        For n As Integer = 0 To cs.Length - 1
            dr("F" & n) = cs(n)
        Next
    Next
   
    DataTables("dtkb").ResumeRedraw
    MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")
End If


 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2017/4/17 13:27:00 [只看该作者]

但还是慢呀,要5秒左右,能否达到一秒以内?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/17 14:29:00 [只看该作者]

 不行,新增一万多行,必须使用这么多时间了。

 回到顶部