过程
问题
在步骤1中检索和存储数据的最有效方法是什么? 一个。我应该在列表字符串中加载它吗? 湾你建议最初做批次吗?
实现步骤2和3的最有效方法
答案 0 :(得分:0)
要检索您想要使用SqlDataReader
的4M记录 - 它一次只会将一行数据加载到内存中。
var cn = new SqlConnection("some connection string");
var cmd = new SqlCommand("SELECT ID FROM SomeTable", cn);
var reader = cmd.ExecuteReader();
while (reader.Read())
{
var id = reader.GetInt32(0);
// an so on
}
reader.Close();
reader.Dispose();
cn.Close();
现在,为了处理两个和三个,我将利用DataTable
获取您需要检索的行,然后在第三个数据库上使用SqlCommand
。这意味着在reader.Read()
内,您可以通过填充DataTable
SqlDataAdapter
并针对ExecNonQuery
发出SqlCommand
来获取所需的一行UPDATE
声明。
编写上述内容的另一种方法是使用using
语句,它更安全一点:
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var id = reader.GetInt32(0);
// an so on
}
}
将消除对以下内容的需求:
reader.Close();
reader.Dispose();
因此,如果您愿意,也可以为SqlConnection
发出。
答案 1 :(得分:0)
SQLBulkCopy类可能会有所帮助。
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx