Как использовать sqlbulkcopy?
Всем привет. Я создал vb.net приложение Windows, которое находится в базе данных SQL Server для парфюмерного магазина. Мне нужно импортировать существующие данные из хранилища, которое хранится в файле Excel 97. Мой вопрос заключается в том, какой способ быстрее: использование хранимой процедуры с параметрами со значениями из ячеек рабочего листа, которая вставляет строки в таблицу базы данных, или использование SQLBulkCopy.
Рабочий лист содержит около 2000 записей.
Я уже пробовал первое решение и его работу, но для второго Я не использовал SQLBulkCopy.
Данные выглядят примерно так:
LONDA COLOR BOJA ZA KOSU 11 395,00 Ђ
ЦВЕТ КРАСКА РАЗНО 12 530,00 €
Что я уже пробовал:
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(fileNamepetrovac) xlworksheet = xlworkbook.Worksheets(1) For i = 2 To xlworksheet.UsedRange.Rows.Count Me.cmduvozartikalapetrovac.Parameters("@naziv").Value = xlworksheet.Cells(i, 2).value.ToString Me.cmduvozartikalapetrovac.Parameters("@sifra").Value = xlworksheet.Cells(i, 4).value.ToString Me.cmduvozartikalapetrovac.Parameters("@cena").Value = Microsoft.VisualBasic.Left(xlworksheet.Cells(i, 5).value.ToString, Len(xlworksheet.Cells(i, 5).value.ToString) - 3) Me.cmduvozartikalapetrovac.Parameters("@plu").Value = xlworksheet.Cells(i, 4).value.ToString Me.cmduvozkasapetrovac.Parameters("@naziv").Value = xlworksheet.Cells(i, 2).value.ToString Me.cmduvozkasapetrovac.Parameters("@sifra").Value = xlworksheet.Cells(i, 4).value.ToString Me.cmduvozkasapetrovac.Parameters("@cena").Value = Microsoft.VisualBasic.Left(xlworksheet.Cells(i, 5).value.ToString, Len(xlworksheet.Cells(i, 5).value.ToString) - 3) Me.cmduvozkasapetrovac.Parameters("@ps").Value = "Ђ" Me.cmduvozkasapetrovac.ExecuteNonQuery() Me.cmduvozartikalapetrovac.ExecuteNonQuery() Next xlworkbook.Close() xlapp.Quit() System.Threading.Thread.CurrentThread.CurrentCulture = OldCulture If xlworkbook IsNot Nothing Then Runtime.InteropServices.Marshal.ReleaseComObject(xlworkbook) End If If xlworksheet IsNot Nothing Then Runtime.InteropServices.Marshal.ReleaseComObject(xlworksheet) End If If xlapp IsNot Nothing Then Runtime.InteropServices.Marshal.ReleaseComObject(xlapp) End If