我的任務是加載新的數據集(用XML文件編寫),然後將其與「舊」集(也是XML)進行比較。所有更改都寫入另一個文件。C# - 部分加載XML文件
我的程序將新文件和舊文件加載到兩個數據集中,然後行之後我比較新集和舊集中的主鍵。當我找到相應的行時,我檢查所有字段,如果與舊的不同,我將它寫入第三組,然後將其設置爲文件。
現在我使用:
newDS.ReadXml("data.xml");
oldDS.ReadXml("old.xml");
,然後我找到對應的主鍵列和比較等領域。它對小文件非常有用。
問題是我的文件可能有高達4GB左右。如果我的新舊數據很大,則將8GB數據加載到內存中是非常困難的。我想加載我的數據的部分,但爲了比較我需要整個舊數據(或如何獲得具體的行與相應的主鍵從XML文件?)。
另一個問題是我不知道XML文件的結構。它由用戶定義。
使用這樣一個大文件的最佳方式是什麼?我想過使用LINQ to XML,但我不知道它是否有可以幫助解決我的問題的選項。也許離開XML並使用不同的東西會更好?
_「我不知道XML文件的結構,它是由用戶定義的。」_你至少要知道'行'是什麼。 –
文件中的元素是否已排序?如果是的話,您可以通過一次只讀取一個元素的文件使用向前移動的掃描。即使不是,您也可以從一個文件中一次讀取一個元素,並將另一個元素保存在內存中。查找SAX API以獲取有關如何執行此操作的示例。 –
數據是否以任何方式排序? Mkaes有很大的不同。 –