我正在尝试将值从一个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行或更多行,而不必调用我的插入函数一千次。