加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 大量插入Sql Server

发布时间:2020-12-12 16:16:39 所属栏目:MsSql教程 来源:网络整理
导读:我试图从Vb.Net将大量记录插入到SQL Server 2005中.虽然插入工作正常,但我尽全力尽快做到这一点.目前,10万条记录需要约11分钟.从应用程序中将大量记录插入SQL Server的建议方法是什么? 我目前的apporach基本上是打开连接,迭代我的信息列表,并且关闭个别的sql
我试图从Vb.Net将大量记录插入到SQL Server 2005中.虽然插入工作正常,但我尽全力尽快做到这一点.目前,10万条记录需要约11分钟.从应用程序中将大量记录插入SQL Server的建议方法是什么?

我目前的apporach基本上是打开连接,迭代我的信息列表,并且关闭个别的sql插入文件,然后关闭连接.任何人都有更好的建议如何做到这一点?

当前功能:

Public Sub BatchInsert(ByVal ParamCollections As List(Of SqlParameter()))

    Dim Conn As SqlConnection = New SqlConnection(DBHelper.DatabaseConnection)
    Using scope As TransactionScope = New TransactionScope()
    Using Conn

        Dim cmd As SqlCommand = New SqlCommand("sproc_name",Conn)

        Conn.Open()
        cmd.CommandType = CommandType.StoredProcedure

        For i = 0 To ParamCollections.Count - 1

            cmd.Parameters.Clear()
            cmd.Parameters.AddRange(ParamCollections(i))
            cmd.ExecuteNonQuery()

        Next

        Conn.Close()
        scope.Complete()
    End Using
    End Using

End Sub

解决方法

使用 SqlBulkCopy类,它将能够比单个插入更快地运行这些100K行.

哦,如果可以的话,我会敦促你实施一个IDataReader能力的课程,以提供SqlBulkCopy.WriteToServer(IDataReader)的方法,这样可以让你按顺序生成数据,一次一行.例如,如果从文本文件导入,则构建一些IEnumerable< T>使用收益回报并将其转换为IDataReader对象的方法将允许您将数据自然地提供给服务器.

为了防止BCP丢失回滚能力,您可以将数据传输到临时表中,然后在服务器上执行正常的INSERT INTO语句,将数据从临时表批量传输到生产表中,这将允许您使用最后一个传输部分的事务,并且仍将比原始的单个insert语句运行得快很多.

编辑:和Here’s an example(C#,但应该很容易转换为VB.Net)的大容量加载API的使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读