У меня много данных, которые нужно вставить в таблицу SQL, и я хотел бы использовать SqlBulkCopy.У меня есть миллионы строк, которые нужно добавить в DataTable, и мне кажется, что у меня нет узких мест, потому что единственный способ добавить строки - это использовать DataTable.Rows.Add(DataRow);
Это пример кода, который я получилfar:
var table = new DataTable("MyTableName");
table.Columns.Add("Id");
table.Columns.Add("SomeOtherColumn");
IEnumerable<MyObject> myData; // this is a method parameter which has millions of values
var rows = myData.Select(data =>
{
return data.SomeInnerEnumerable.Select(e =>
{
var row = table.NewRow();
row["Id"] = e.Id;
row["SomeOtherColumn"] = e.SomeOtherColumn;
return row;
});
}).SelectMany(r => r); // flattens IEnumerable<IEnumerable<DataRow>> into IEnumerable<DataRow>
Console.WriteLine("DataRows created");
foreach (var row in rows)
{
table.Rows.Add(row);
}
Код печатает "DataRows created"
очень быстро, но зависает в цикле на 25+ минут.Есть ли более эффективный способ добавления такого количества строк в DataTable?