我想使用我在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