Foxtable(狐表)用户栏目专家坐堂 → [求助]大数据的处理


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

主题:[求助]大数据的处理

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


加好友 发短信
等级:幼狐 帖子:64 积分:610 威望:0 精华:0 注册:2012/3/14 8:46:00
[求助]大数据的处理  发帖心情 Post By:2014/12/2 11:37:00 [只看该作者]

我现在建了个sql数据库,1行存放一个站点1天的各个要素值,现在要增加130个站点50年的资料,数据量很大,我的思路是先查找某站点某天的资料是否入库了,如果没有,新增一行,加入数据,否则更新数据,可是非常慢,追加1个站点的一个要素都要2个多小时。求指点,有没有更好的方法。代码如下:

 

'''加日雨量
Dim dr1 As DataRow
Dim dt As Date
Dim fl As String

For Each dr As DataRow In DataTables("rd56768").DataRows
    For i As Integer =1 To Date.DaysInMonth(dr("年"),dr("月"))
        dt = dr("年") & "/" & dr("月") & "/" & i
        fl = "Id = '56768' and datetime = " & "#" & dt & "#"
        'Output.Show("条件:" & fl)
       
        dr1 = DataTables("日气象要素").Find(fl)
        If dr1 IsNot Nothing Then '如果找到的话
            dr1("R") = dr("r" & i)
            dr1("R2008") = dr("r28" & i)
            dr1("R0820") = dr("r82" & i)
        Else
            Tables("日气象要素").AddNew()
            dr1("R") = dr("r" & i)
            dr1("R2008") = dr("r28" & i)
            dr1("R0820") = dr("r82" & i)
           
        End If
       
    Next
Next

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/2 11:47:00 [只看该作者]

 大数据量,不要用find函数。

 

 还不清楚你具体的问题,上传一个例子操作一下。

[此贴子已经被作者于2014-12-2 11:48:32编辑过]

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


加好友 发短信
等级:三尾狐 帖子:621 积分:5130 威望:0 精华:1 注册:2014/8/7 6:56:00
  发帖心情 Post By:2014/12/2 11:54:00 [只看该作者]

 你的数据很之前啊

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


加好友 发短信
等级:幼狐 帖子:64 积分:610 威望:0 精华:0 注册:2012/3/14 8:46:00
  发帖心情 Post By:2014/12/2 12:12:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq图片2.jpg
图片点击可在新窗口打开查看

图1里的表是原始数据,一个要素一个月存一行,每个站点一个要素存一个文件,我想把所有站点所有要素放在一个库里,如图2里的表,也就是按我的要求,把表1里面的数据转存到表2里。就是这个意思。

 


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


加好友 发短信
等级:幼狐 帖子:64 积分:610 威望:0 精华:0 注册:2012/3/14 8:46:00
  发帖心情 Post By:2014/12/2 12:13:00 [只看该作者]

以下是引用有点甜在2014-12-2 11:47:00的发言:

 大数据量,不要用find函数。

 

 还不清楚你具体的问题,上传一个例子操作一下。

[此贴子已经被作者于2014-12-2 11:48:32编辑过]

不用find函数,还有更好的查找函数吗?


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


加好友 发短信
等级:幼狐 帖子:64 积分:610 威望:0 精华:0 注册:2012/3/14 8:46:00
  发帖心情 Post By:2014/12/2 12:51:00 [只看该作者]

help ? 木有人有空看啊?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/2 14:15:00 [只看该作者]

 上传例子啊。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/2 14:16:00 [只看该作者]

 填充数据,就参考

 

http://www.foxtable.com/help/topics/0680.htm

 


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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/12/2 17:42:00 [只看该作者]

确保表1的数据时完整的,你可以先建立一些测试数据,测试下面语句正确性,以免浪费时间,

dim i as integer =  1
dim str as string = "insert into 日气象要素(ID,DateTime,R,R2008,R0280) select '56768',convert(datetime,年 + 月 + '{0}'),r{0}, r28{0},r82{0} from rd56768"
str = cexp(str,i)

具体你再拓展下吧,主要是解决时间判断问题,convert(datetime,年 + 月 + '{0}')。看有没有其它思路。

 回到顶部