我有250万条记录的数据库。数据库中的一列是空的。现在我想通过插入Bulk来填充该列,因为简单的更新查询需要花费很多时间。但问题是bulkinsert在最后开始插入记录,而不是从一开始就插入记录。这是我的代码:
using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
{
for (int j = 0; j < rows.Length; j++)
{
DataRow dailyProductSalesRow = prodSalesData.NewRow();
string[] temp = ((string)rows[j]["Area"]).Split(new string[] { " ", "A","a" }, StringSplitOptions.None);
if (Int32.TryParse(temp[0], out number))
{
int num1 = Int32.Parse(temp[0]);
dailyProductSalesRow["Area1"] = 1;
}
else
{
dailyProductSalesRow["Area1"] = 0;
Console.WriteLine("Invalid "+temp[0]);
}
prodSalesData.Rows.Add(dailyProductSalesRow);
}
s.DestinationTableName = prodSalesData.TableName;
foreach (var column in prodSalesData.Columns)
{
s.ColumnMappings.Add(column.ToString(), column.ToString());
}
try
{
s.WriteToServer(prodSalesData);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
答案 0 :(得分:1)
如果您需要更新,请使用UPDATE
stamenet
BULK INSERT旨在帮助您更快地插入许多记录,因为INSERT
在尝试将大量数据存入数据库时可能非常慢且难以使用。
UPDATE
已经是更新数据库中记录的最快方法。在你的情况下,根据你BULK INSERT
显然想做的事情,我猜你想要一个类似这样的陈述。
UPDATE SalesData
SET Area1 = CONVERT(INT, SUBSTRING(Area, 0, CHARINDEX('A', Area)))
如果您想尝试加快速度,请尝试查看Optimizing Bulk Import Performance。当更新许多记录时,那里的一些建议(例如数据库使用的恢复模型)也可能适用于UPDATE
性能。