使用bulkinsert C#更新1列

时间:2013-11-19 11:33:36

标签: c# sql sqlbulkcopy

我有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());
     }
}

1 个答案:

答案 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性能。