我正在将 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。我得到这个错误:超时已过期的主要内容,如果未能解决你的问题,请参考以下文章

从 Excel 导入 - 标题不在第 1 行

如何在导入到 SQL Server 数据库时删除 Excel 电子表格的顶部行

将特定数据从excel导入到datagrid vb.net

根据参数从 Access 表导入 Excel

excl数据怎么导入到MongoDB中,或者怎样将excl处理在导入到数据库中,数据量有4万条

将数据从excel导入sql返回NULL