以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  有关导入表数据保存速度问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=59673)

--  作者:baoxyang
--  发布时间:2014/11/8 9:59:00
--  有关导入表数据保存速度问题

批量导入SQL数据表后,需要保存数据,目前使用了DataTables("普仓入库单_Table1").save()

但可能会存在保存速度较慢(上千条数据),另外在保存过程可能存在数据库服务器断网时,数据不完整。

请教,应当使用什么方法合适?谢谢!!


--  作者:Bin
--  发布时间:2014/11/8 10:08:00
--  
断网而导致保存不完整那是没办法的,  如果怕重复数据,  导入的时候排除重复就好
--  作者:baoxyang
--  发布时间:2014/11/8 10:10:00
--  
保存失败没有提示吗
--  作者:Bin
--  发布时间:2014/11/8 10:12:00
--  
连不上网了会出现错误提示的
--  作者:mxm121
--  发布时间:2014/11/8 19:26:00
--  
我自己用的导入保存 第一个参数是原数据表 第二个参数是目的数据表  参考lsy先前的一个帖子做的
导入的时候先生成一个临时表把数据倒进去,然后使用多行一次性插入保存 速度比save快多了 我使用互联网保存500条数据 37列 大概是16-20秒

Dim stbl As String = Args(0)
Dim dtbl As String = Args(1)
Dim dt As Date = Date.Now
Dim cmd As New SQLCommand
cmd.C
Dim sql1,sql2 As String
For Each c As Col In Tables(stbl).Cols
    sql1 + = c.Name & ","
Next
For Each r As Row In Tables(stbl).Rows
    sql2 = ""
    For Each c As Col In Tables(stbl).Cols
        If c.IsDate Then
            sql2 + = "\'" & r(c.Name) & "\'" & ","
        ElseIf c.IsString Then
            sql2 + = "\'" & r(c.Name) & "\',"
        ElseIf c.IsBoolean Then
            If r(c.Name) = True Then
                sql2 + = 1 & ","
            ElseIf r(c.Name) = False Then
                sql2 + = 0 & ","
            End If
        Else
            sql2 + = r(c.Name) & ","
        End If
    Next
    cmd.CommandText + = "InSert Into " & dtbl & " (" & sql1.Trim(",") & ") Values (" & sql2.Trim(",") & ");"    
Next
cmd.CommandText = cmd.CommandText.Trim(";")
cmd.ExecuteNonQuery
DataTables(dtbl).Load
Dim tp As TimeSpan
tp = Date.Now - dt
MessageBox.Show(tp.TotalSeconds)

--  作者:逛逛
--  发布时间:2014/11/8 20:25:00
--  

大数据保存时,还是启用 事务 为好