值复制功能批处理

时间:2014-09-22 09:07:54

标签: sql sql-server batch-processing

我正在尝试将值从一个ID复制到另一个ID。 ID和时间戳是主键。

String sqlString = "SELECT * FROM Values WHERE ID = @ID";

var sqlCommand = new SqlCommand(sqlString, sqlConnect);
sqlCommand.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = ID;

using (var reader = sqlCommand.ExecuteReader())
{
    while (reader.Read())
    {
        time = reader["Time"];
        dt = DateTime.Parse(time.ToString(), CultureInfo.InvariantCulture);
        value = reader["Value"];
        insertData(IdDestination, dt, value);
    }
}

这个功能正常,但是如果我有10.000个表行,那么它很慢。

我在考虑使用SqlBulkCopy,但这对我不起作用,因为我需要更改目标ID。另一个问题是,有时候,我想复制的值已经存在,所以我需要回滚或提交。由于丢失重要数据,Update也无效。

有没有人知道哪种批处理对我有用? 我想同时插入1000行或更多行,而不必调用我的插入函数一千次。

0 个答案:

没有答案