以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]大数据的处理  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60843)

--  作者:cxqxjyzg
--  发布时间: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

 


--  作者:有点甜
--  发布时间:2014/12/2 11:47:00
--  

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

 

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

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

--  作者:飞飞
--  发布时间:2014/12/2 11:54:00
--  
 你的数据很之前啊
--  作者:cxqxjyzg
--  发布时间:2014/12/2 12:12:00
--  


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

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

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

 


--  作者:cxqxjyzg
--  发布时间:2014/12/2 12:13:00
--  
以下是引用有点甜在2014-12-2 11:47:00的发言:

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

 

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

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

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


--  作者:cxqxjyzg
--  发布时间:2014/12/2 12:51:00
--  
help ? 木有人有空看啊?
--  作者:有点甜
--  发布时间:2014/12/2 14:15:00
--  
 上传例子啊。
--  作者:有点甜
--  发布时间:2014/12/2 14:16:00
--  

 填充数据,就参考

 

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

 


--  作者:jspta
--  发布时间: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}\')。看有没有其它思路。