В C # я использую System.Data.SqlClient и делаю что-то вроде кода ниже. Есть ли что-то похожее в VB (Excel)?
{ static void InsertDataIntoSQLServerUsingSQLBulkCopy(DataTable csvData)
string connetionString = null;
SqlConnection cnn;
connetionString = System.Configuration.ConfigurationManager.ConnectionStrings["Import"].ConnectionString;
cnn = new SqlConnection(connetionString);
cnn.Open();
using (SqlBulkCopy s = new SqlBulkCopy(cnn))
{
s.DestinationTableName = "dbo.MyTable";
foreach (var column in csvData.Columns)
s.ColumnMappings.Add(column.ToString(), column.ToString());
s.WriteToServer(csvData);
}
Я пытаюсь экспортировать данные из моей таблицы из Excel в SQL Server. Я не могу использовать массовую вставку, потому что файл находится на другом компьютере, поэтому SQL не может его прочитать.
Итак, я попытался сделать что-то подобное в VB (Excel):
Dim recSet As New ADODB.Recordset
Dim fieldIndex As Long
Dim rowIndex As Long
Set recSet = New ADODB.Recordset
Sqlstr = "Select * from MyTable"
recSet.Open Sqlstr, con, adOpenDynamic, adLockOptimistic
For rowIndex = 2 To 10000
recSet.AddNew
For fieldIndex = 1 To 9
recSet.Fields(Cells(1, fieldIndex).Value) = Replace(Sheets("MyTable").Cells(rowIndex, fieldIndex).Value, ",", ".")
Next fieldIndex
Next rowIndex
recSet.UpdateBatch
Но есть тысячи строк, и каждая строка вставляется в SQL с помощью собственного оператора INSERT. Это занимает много времени и ресурсов сервера. Можно ли оптимизировать это?