我想使用我在C#中编写的解决方案将大量数据从SQL Server传输到MongoDB(大约8000万条记录)。 我想一次转移200 000条记录,但我的问题是跟踪已经转移的内容。通常我如下会做到这一点:将大数据迁移到新数据库
Gather IDs from destination to exclude from source scope
Read from source (Excluding IDs already in destination)
Write to destination
Repeat
的问题是,我建立在C#中含有存在于目标,排除那些来自源选择,例如为目的的所有ID字符串。
select * from source_table where id not in (<My large list of IDs>)
现在你可以想像,当我已经插入600条000多个记录,然后建立与所有的ID字符串什么这里发生,它变大,更会减慢速度,所以我在寻找一个一次迭代200 000条记录的方式,如游标,但我从来没有做过这样的事情,所以我在这里寻找建议。
只是作为参考,我做我的内容如下
SqlConnection conn = new SqlConnection(myConnStr);
conn.Open();
SqlCommand cmd = new SqlCommand("select * from mytable where id not in ("+bigListOfIDs+")", conn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
//Populate objects for insertion into MongoDB
}
}
所以基本上,我想知道如何通过大量数据的迭代,而不选择在一个全力以赴的数据,或有过滤数据使用大字符串。任何帮助,将不胜感激。
我希望有一些方法可以通过一些类似游标的方法或异步方法一次遍历N个记录,但经过大量的搜索后,我空手而出。我必须解决将最后使用的ID存储在单独的表中的方法。谢谢你的帮助。 – Anomaly