以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  sqlcommand插入数据过慢  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=151011)

--  作者:lur320
--  发布时间:2020/6/12 15:48:00
--  sqlcommand插入数据过慢
如下代码,大约18000行数据,太慢了。有没有办法加速?

DataTables("MMS080").SQLDeleteFor("")


Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "Insert Into MMS080 (itemnumber, quantity, ordernumber,status) Values(?,?,?,?)"


For Each dt As Row In Tables("tempmms080").Rows \'\'\'\'历遍open mo
   If CInt(dt.Index/1200) = dt.Index/1200 Then
                Vars("loadingtext") ="请等待: " & math.Ceiling(100*dt.Index/Tables("tempmms080").Rows.count) & "%"
            End If   这一段大约等了30几秒。从0%一直到100%

    cmd.Parameters.Clear
    cmd.Parameters.Add("@itemnumber",dt("Item number"))
    cmd.Parameters.Add("@quantity",dt("Transaction quantity"))
    cmd.Parameters.Add("@ordernumber",dt("Order number"))
    cmd.Parameters.Add("@status",dt("Status"))
    cmd.ExecuteNonQuery

Next

th2.start()

DataTables("MMS080").load
Tables("MMS080").ResumeRedraw
DataTables.delete("tempmms080")
Return Nothing
[此贴子已经被作者于2020/6/12 15:49:03编辑过]

--  作者:有点蓝
--  发布时间:2020/6/12 16:06:00
--  
1、如果是SqlServer,参考:http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=147288&skin=0

2、access可以尝试加上事务:http://www.foxtable.com/webhelp/topics/3312.htm

另外去掉在循环里显示进度的用法,这种本身就严重影响效率

--  作者:lur320
--  发布时间:2020/6/12 16:08:00
--  
sqlserver的那个连接失效了。
--  作者:有点蓝
--  发布时间:2020/6/12 16:12:00
--  
我打开没有问题。或者论坛里自己搜“sqlBulkCopy