Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口表导入TXT文件


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

主题:[求助]窗口表导入TXT文件

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


加好友 发短信
等级:五尾狐 帖子:1137 积分:11230 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]窗口表导入TXT文件  发帖心情 Post By:2020/5/16 22:44:00 [只看该作者]

老师好!

分别在最新的开发版和商业版导入3个TXT文件,共17780行,商业版耗时8.88秒;开发版耗时159.77秒。

测试的数据源是sql本地外部数据源,环境、代码完全相同,为什么差异这么大?

尝试过重装开发版、删除项目Bin文件夹,压缩项目等,没有改善。这种情况可能是哪里的原因?

谢谢!

 

代码:

'''
Dim cn As Integer = 0   '预设导入文件个数
Dim count As Integer = 0   '导入总数
Dim str As String = ""    '股piao名预设
Dim p As WinForm.ProgressBar    '进度条预设
p = e.Form.Controls("ProgressBar1")


Tables("指数日线").StopRedraw()

Dim dlg As New OpenFileDialog
dlg.Filter = "TXT文件|*.TXT"
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.Ok Then
   count = dlg.FileNames.Length    '导入个数
p.Minimum = 0
p.Maximum = count
p.Value = 0

  
    Dim dt As Date = Date.Now
    For Each file As String In dlg.FileNames
        cn +=1  '文件个数
       
        e.Form.Controls("Label3").text = "正在导入第  " & cn & "/" & count & "  只股piao:" & vbcrlf & FileSys.GetName(file)
        e.Form.Controls("Label进度条百分比").text = Format(cn/count ,"Percent")
        p.Value =  cn
        Application.DoEvents  '代码即刻生效----耗时
               
        Dim strs As String = FileSys.ReadAllText(file)
        strs = strs.Trim().Replace(" ", ",").Replace(vbtab, ",").Replace(vblf,"")   
        Dim name As String = FileSys.GetName(file.SubString(0, file.length - 4))
        Dim dr1 As DataRow = DataTables("自选股").Find("代码 = '" & name & "'")
        Dim rs() As String = strs.Split(vbcr)

        For i As Integer = 0 To rs.Length - 2
            Dim cs() As String = rs(i).Split(",")
            Dim dr As DataRow = DataTables("指数日线").Addnew()
            dr("代码") = name
            If dr1 Is Nothing Then
                dr("名称") = name
            Else
                dr("名称") = dr1("名称")
            End If
            dr("日期") = cs(0)
            dr("开盘价") = cs(1)
            dr("最高价") = cs(2)
            dr("最低价") = cs(3)
            dr("收盘价") = cs(4)
            dr("成交量") = cs(5)
            dr("金额") = cs(6)
        Next

        GC.Collect  '释放内存
    Next

    Dim tp As TimeSpan    '计算耗时
    tp = Date.Now - dt
    e.Form.Controls("Label3").text = "正在导入  " & cn & "  只股piao," & "耗时  " & tp.TotalSeconds
   
End If

Tables("指数日线").ResumeRedraw()

msgbox("导入结束")

 

[此贴子已经被作者于2020/5/17 21:13:50编辑过]

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/17 18:49:00 [只看该作者]

请把开发版和商业版的例子发上来测试

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


加好友 发短信
等级:五尾狐 帖子:1137 积分:11230 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2020/5/17 21:13:00 [只看该作者]

蓝老师,找到原因了,如果接受导入的表作为窗口副本表,就非常慢,这是什么原因?

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


加好友 发短信
等级:五尾狐 帖子:1137 积分:11230 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2020/5/17 21:26:00 [只看该作者]

 


以下内容是专门发给有点蓝浏览



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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/17 22:07:00 [只看该作者]

1、副本窗口
Tables("指数日线").StopRedraw()
改为
Tables("指数日线-作副本表-慢_table1").StopRedraw()

2、下面这句代码被注释掉了,所以不会保存。ExecuteXXX是用来执行sql的,不调用就不会执行
'Count += cmd.ExecuteNonQuery()


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


加好友 发短信
等级:五尾狐 帖子:1137 积分:11230 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2020/5/18 14:39:00 [只看该作者]

谢谢蓝老师!
我把上面两处改过来了,但是保存的时间为什么比用save保存的还慢。麻烦老师再给看一下代码。谢谢!


以下内容是专门发给有点蓝浏览



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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/18 14:58:00 [只看该作者]

内部表直接save即可,不要使用sql增删改数据

 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1137 积分:11230 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2020/5/18 15:10:00 [只看该作者]

实际是在sql外部表使用的,因为数据在数千万行的级别,所以请老师看看是不是代码有问题?


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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/18 15:15:00 [只看该作者]

SqlServer数据库用这种:http://foxtable.com/bbs/dispbbs.asp?boardid=2&Id=147288
[此贴子已经被作者于2020/5/18 15:15:38编辑过]

 回到顶部