将SQL数据从磁盘上的表批量复制到内存中的表

时间:2013-09-05 04:49:18

标签: c# sql sql-server database sqlbulkcopy

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

3 个答案:

答案 0 :(得分:0)

  1. 批量复制非常有用,如果你想在表中提供大量插入,你也可以使用一致性验证等。这是最好的SQLServer方法,因为它提供了~10倍的性能。
  2. 您的要求听起来只需要一个选择SELECT field1, field2, etc. FROM ...
  3. 没有更多。

答案 1 :(得分:0)

  

SQLBulkCopy是实现此目的的前进方式

否:SQLBulkCopy不会将数据复制到内存,而是复制到SQL Server表。 你需要一个SqlDataReader

答案 2 :(得分: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;
}