Vb.net SqlBulkCopy速度测试

Vb.net SqlBulkCopy速度测试,vb.net,Vb.net,我正在使用vb.net将excel文件中的一些数据导入sql数据库。我正在使用SqlBulkCopy来执行此操作。我测试了该方法的速度,发现当specify BatchSize=300时,如果我根本不指定BatchSize,速度会慢2秒。这可能吗?我认为指定的批量会更快,因为与数据库的通信更少 Dim xlapp As Excel.Application Dim xlworkbook As Excel.Workbook Dim xlworksheet As Excel.Works

我正在使用vb.net将excel文件中的一些数据导入sql数据库。我正在使用SqlBulkCopy来执行此操作。我测试了该方法的速度,发现当specify BatchSize=300时,如果我根本不指定BatchSize,速度会慢2秒。这可能吗?我认为指定的批量会更快,因为与数据库的通信更少

Dim xlapp As Excel.Application
    Dim xlworkbook As Excel.Workbook
    Dim xlworksheet As Excel.Worksheet
    Dim newCulture As System.Globalization.CultureInfo
    Dim OldCulture As System.Globalization.CultureInfo

    xlapp = New Excel.Application

    OldCulture = System.Threading.Thread.CurrentThread.CurrentCulture
    newCulture = New System.Globalization.CultureInfo(xlapp.LanguageSettings.LanguageID(Microsoft.Office.Core.MsoAppLanguageID.msoLanguageIDUI))
    System.Threading.Thread.CurrentThread.CurrentCulture = newCulture

    xlworkbook = xlapp.Workbooks.Open("E:\KREZA\petrovac.xls")
    xlworksheet = xlworkbook.Worksheets(1)

    Dim tabela As DataTable
    tabela = New DataTable

    For i As Integer = 1 To 4
        tabela.Columns.Add(New DataColumn())
    Next

    For i As Integer = 1 To xlworksheet.UsedRange.Rows.Count
        tabela.Rows.Add(CInt(xlworksheet.Cells(i, 4).value.ToString), xlworksheet.Cells(i, 2).value.ToString, CInt(xlworksheet.Cells(i, 9).value.ToString), CDbl(Microsoft.VisualBasic.Left(xlworksheet.Cells(i, 5).value.ToString, Len(xlworksheet.Cells(i, 5).value.ToString) - 3)))

    Next

    xlworkbook.Close()
    xlapp.Quit()

    cnparfimerija.Open()
    Using copy As New SqlBulkCopy(cnparfimerija)
        copy.ColumnMappings.Add(0, 1)
        copy.ColumnMappings.Add(1, 2)
        copy.ColumnMappings.Add(2, 3)
        copy.ColumnMappings.Add(3, 4)


        copy.DestinationTableName = "ArtikliPetrovac"
        copy.BatchSize = 300
        copy.WriteToServer(tabela)
    End Using
    cnparfimerija.Close()

    MessageBox.Show("Uspesno")

这取决于您的数据库和行数,我想我也遇到了类似的问题,但我每次都有1行以上的行导入到数据库,所以我发送了4000的最佳批处理大小。增加和减少会导致系统减慢复制过程。

这些事情总是一个平衡的过程。更改批次大小会改变流程的多个方面。有些事情可能会提高效率,有些事情可能会降低效率。