0

我想定期将大型记录从 SQL 服务器复制到内存表中。我需要将我读到的这些字段放入我自己的对象中,而不是放入另一个 SQL 表或平面文件存储中。SQLBulkCopy 是执行此操作的方法吗?

4

3 回答 3

0
  1. 当您想向表中提供大量插入时,批量复制很有用,您还可以使用一致性验证等。这是最好的 SQLServer 方法,因为它提供了大约 10 倍的性能。
  2. 您的要求听起来只需要一个选择,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 回答