Foxtable(狐表)用户栏目专家坐堂 → [求助]需要救命


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

主题:[求助]需要救命

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


加好友 发短信
等级:三尾狐 帖子:646 积分:4893 威望:0 精华:0 注册:2016/1/16 22:42:00
[求助]需要救命  发帖心情 Post By:2017/4/23 10:32:00 [只看该作者]

我有一个数据表,其中有3000只股piao,每只股piao每天都有数据,现在我需要删除有可能的某piao某天重复数据,现在已经有2年的数据了,

Dim bTbl As New GroupTableBuilder( "特定股piao加仓股",DataTables("特大单加仓股"))
Dim outTbl As Table
bTbl.Groups.AddDef("股piao代码")
bTbl.Groups.AddDef("交易日期",DateGroupEnum.None,"交易日期")
' bTbl.Filter="[股piao代码] = " & tcode(i)'  ORDER BY 交易日期 Desc"
bTbl.Build
outTbl =Tables("特定股piao加仓股") 'bTbl.Build(True) '生成一个DataTable
If outTbl.Rows.Count>0 Then
    For Each dr As Row In outTbl.Rows
        Output.Show("正在清理【特大单加仓股】 代码【" & dr("股piao代码") & "】 日期【" & dr("交易日期") & "】")
        DataTables("特大单加仓股").DeleteFor("[股piao代码]=" & dr("股piao代码") & " And [交易日期]= #" & dr("交易日期") & "#" )
    Next
End If

Return 1

 

 

问题是1分多钟才能处理1只股piao,这样我要2天,才能完成,请问各位大侠,还有快一点的方法吗


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


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

直接删除可以参考

 

Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "第一列,第二列"
For Each dr As DataRow In DataTables("表A").Select("", cs)
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c).replace(" ","") <> dr(c).replace(" ", "") Then
                flag = True
                Exit For
            End If
        Next
        If flag Then
            If count > 1 Then
                idx &= idx_temp
            End If
            count = 1
            idx_temp = ""
        Else
            count += 1
            idx_temp &= dr("_Identify") & ","
        End If
    Else
        count += 1
    End If
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

 

Tables("表A").Filter = "_Identify not In (" & idx.trim(",") & ")"

'DataTables("表A").DeleteFor("_Identify not In (" & idx.trim(",") & ")")


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


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

大数据量,建议用sql语句,如果用sql语句,参考

 

http://www.baidu.com/baidu?wd=sqlserver+%C9%BE%B3%FD%D6%D8%B8%B4&tn=monline_4_dg

 


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


加好友 发短信
等级:三尾狐 帖子:646 积分:4893 威望:0 精华:0 注册:2016/1/16 22:42:00
  发帖心情 Post By:2017/4/23 11:21:00 [只看该作者]

哎,看来是没得救了,foxtable处理速度貌似太慢,我还有一个表与上面讲的差不多,要按时间统计连续,最近20个数据统计,最近10个数据统计,最近半年数据统计,最近一年半数据统计并保存,结果3分多种搞一只股piao,3000只要6天,妈噎,我晕死了。没办法,现在急着用,先将就ACCESS与foxtable。其它数据库还不会

 

 

[此贴子已经被作者于2017/4/23 11:25:06编辑过]

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


加好友 发短信
等级:三尾狐 帖子:646 积分:4893 威望:0 精华:0 注册:2016/1/16 22:42:00
  发帖心情 Post By:2017/4/23 13:05:00 [只看该作者]

Dim bTbl As New GroupTableBuilder( "特定股piao加仓股",DataTables("特大单加仓股"))
Dim outTbl As Table
bTbl.Groups.AddDef("股piao代码")
bTbl.Groups.AddDef("交易日期",DateGroupEnum.None,"交易日期")
b.Totals.AddDef("股piao代码",AggregateEnum.Count,"出现次数")
' bTbl.Filter="[股piao代码] = " & tcode(i)'  ORDER BY 交易日期 Desc"
bTbl.Build
outTbl =Tables("特定股piao加仓股") 'bTbl.Build(True) '生成一个DataTable
If outTbl.Rows.Count>0 Then
    outTbl.Filter="[出现次数] > 1"
    For Each dr As Row In outTbl.Rows
        Output.Show("正在清理【特大单加仓股】 代码【" & dr("股piao代码") & "】 日期【" & dr("交易日期") & "】总共【" & outTbl.Rows.Count)
        ' If dr("出现次数")>1 Then
        Dim drs As List(Of DataRow) = DataTables("特大单加仓股").Select( "[股piao代码] = '" & dr("股piao代码") & "' And [交易日期] = #" & dr("交易日期") & "#","ID")
        If DRS.Count>1 Then
            For i As Integer=1 To DRS.Count-1
                DataTables("特大单加仓股").DeleteFor("[ID] =" & DRS(I)("ID"))
            Next
            Output.Show("已经清理【特大单加仓股】 代码【" & dr("股piao代码") & "】 日期【" & dr("交易日期") & "】")
        End If
        ' End If
        ' DataTables("特大单加仓股").DeleteFor("[股piao代码]=" & dr("股piao代码") & " And [交易日期]= #" & dr("交易日期") & "#" )
    Next
End If
Output.Show("清理完成")

Return 1

 

 

用此法快速解决


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


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

 处理速度和你写的代码有关,你重复不断的查,肯定会慢啊。

 

 具体问题,做实例上来测试。


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


加好友 发短信
等级:三尾狐 帖子:646 积分:4893 威望:0 精华:0 注册:2016/1/16 22:42:00
  发帖心情 Post By:2017/4/23 16:19:00 [只看该作者]

20小时的计算时间,用此法仅30分钟

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


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

 参考2楼、3楼方法,不可能慢。慢,说明你查询次数太多。


 回到顶部