以文本方式查看主题 - 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 -- 大数据保存时,还是启用 事务 为好 |