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的使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |