我應該做下面的事情:
1)讀取一個巨大的(700MB〜1000萬個元素)XML文件;
2)解析它保存順序;
3)用SQL插入語句創建一個文本(一個或多個)文件,將其批量加載到數據庫上;
4)編寫關係元組並將它們寫回XML。讀寫XML作爲關係數據 - 最佳實踐
我在這裏交流關於最佳(==快速快速...)方式的一些想法。我將使用C#4.0和SQL Server 2008.
我相信XmlTextReader是一個好的開始。但我不知道它是否可以處理如此龐大的文件。它在實例化時載入所有文件,還是隻在內存中保存實際讀取行?我想我可以做一個while(reader.Read())
,那應該沒問題。
什麼是寫入文本文件的最佳方式?因爲我應該保留XML的順序(採用一些編號模式),所以我將不得不在內存中保存一些部分的樹來進行計算等等......我應該用stringbuilder迭代嗎?我將有兩種情況:一種是每個節點(元素,屬性或文本)將在同一個表中(即將是同一個對象),另一種情況是對於每種類型的節點(只有這三種類型,沒有評論等。)我將有一個表中的數據庫和一個類來表示這個實體。
我最後一個具體問題是DataSet ds.WriteXml
有多好?它會處理10M元組嗎?也許它最好從數據庫中帶來塊並使用XmlWriter ......我真的不知道。
我正在測試所有這些東西......但我決定發佈這個問題來傾聽你們,跳過你的專業知識可以幫助我更正確,更快地完成這件事。
由於提前,
佩德羅Dusso
有人做SAX解析了嗎? – kurosch 2010-09-16 20:29:34
我在.NET中使用'XmlReader',不要錯過SAX。 – 2010-09-17 00:52:53
SAX是什麼意思? – 2010-09-17 12:17:57