我想定期将大型记录从 SQL 服务器复制到内存表中。我需要将我读到的这些字段放入我自己的对象中,而不是放入另一个 SQL 表或平面文件存储中。SQLBulkCopy 是执行此操作的方法吗?
问问题
873 次
3 回答
0
- 当您想向表中提供大量插入时,批量复制很有用,您还可以使用一致性验证等。这是最好的 SQLServer 方法,因为它提供了大约 10 倍的性能。
- 您的要求听起来只需要一个选择,
SELECT field1, field2, etc. FROM ...
.
而已。
于 2013-09-05T05:57:50.980 回答
0
创建一个类..
public class MemoryObject
{
public Int64 Id {get; set;}
public string OtherProperty {get; set;}
}
然后,使用 SQLDataReader ...
public List<MemoryObject> GetMemoryObjects()
{
using (SqlConnection connection = new SqlConnection("..."))
{
string sql = "query";
SqlCommand command = new SqlCommand(sql.ToString(), connection);
command.CommandTimeout = 3600;
connection.Open();
var memoryObjects = new List<MemoryObject>();
using (var rdr = command.ExecuteReader())
{
while (rdr.Read())
{
var memoryObject = new MemoryObject {
Id = rdr.GetInt64(0),
OtherProperty = rdr.GetString(1)
};
memoryObjects.Add(memoryObject);
}
}
}
return memoryObjects;
}
于 2013-09-05T20:07:22.203 回答
0
是一个 SQLBulkCopy 前进的方式来做到这一点
否:SQLBulkCopy 不会将数据复制到内存,而是复制到 SQL Server 表。你需要一个 SqlDataReader
于 2013-09-05T19:59:23.067 回答