我正在将 348k 行数据从 Excel 导入到 VB.net SQL。我得到这个错误:超时已过期
Posted
技术标签:
【中文标题】我正在将 348k 行数据从 Excel 导入到 VB.net SQL。我得到这个错误:超时已过期【英文标题】:I'm importing 348k Row of data from Excel to VB.net SQL. And I get this Error: Timeout expired 【发布时间】:2013-10-04 16:12:29 【问题描述】:我得到这个错误:
system.data.sqlclient.sqlexception 超时已过期。操作完成前超时时间已过或服务器没有响应。
代码:
Dim ExcelConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\z.fontanilla\Documents\etl.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=Yes""")
ExcelConnection.Open()
Dim expr As String = "SELECT * FROM [Sheet1$]"
Dim objCmdSelect As OleDbCommand = New OleDbCommand(expr, ExcelConnection)
Dim objDR As OleDbDataReader
Dim SQLconn As New SqlConnection()
Dim ConnString As String = "Data Source=cyayay\sqlexpress;Initial Catalog=reportingDB;Integrated Security=True"
SQLconn.ConnectionString = ConnString
SQLconn.Open()
Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(SQLconn)
bulkCopy.DestinationTableName = "tFalse"
Try
objDR = objCmdSelect.ExecuteReader
bulkCopy.WriteToServer(objDR)
objDR.Close()
SQLconn.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Using
ExcelConnection.Close()
【问题讨论】:
也许您的操作耗时太长...将其分解为更小的操作。我的意思是,一次发送一批数据,提交,然后再发送一批。 你去!哇哦!有用!谢谢。 【参考方案1】:您可以尝试将 objCmdSelect 对象的 CommandTimeout 属性设置为 700(或其他)值。
【讨论】:
以上是关于我正在将 348k 行数据从 Excel 导入到 VB.net SQL。我得到这个错误:超时已过期的主要内容,如果未能解决你的问题,请参考以下文章
如何在导入到 SQL Server 数据库时删除 Excel 电子表格的顶部行