[英]Approach to process huge xml files in C#
有人可以指導我這個問題嗎?
在我的機構中,我們處理大尺寸(最大1 GB)的xml文件並將詳細信息插入數據庫表。 根據當前的設計,我們使用XmlReader解析xml文件並形成包含所需數據的xml字符串,然后將其傳遞到存儲過程(xml數據類型)以將詳細信息插入到db中。
現在問題是我們不確定除此之外是否會有更好的方法? 所以請建議.Net 3.5和/或sql server 2005是否有任何新功能以比我們的方法更好的方式處理這個問題。
任何有關此reagrd的幫助都將受到高度贊賞。
謝謝。
你關心XML文件中的所有內容嗎? 如果沒有,您可以使用StreamReader
並從XML獲取文本並將其傳遞給數據庫。
如果您需要驗證XML是否正確,最好使用XmlReader
。
但是,將1GB的XML轉儲到數據庫中似乎有點奇怪,這個XML數據的目的是什么? 它有很多嵌套元素嗎? 也許你可以對它進行反序列化並將每個對象存儲在appropriet表中,這樣就可以實現更容易理解的設計。
您可以考慮使用一些方法來簡化/更好地設計軟件:
MemoryMappedFile
嗎? 我懷疑如果有任何性能問題,它將與存儲過程和數據庫方面相關,而不是讀取文件。
為什么要將XML文件存儲在數據庫表中? 我建議使用不同的解決方案是合適的,但是如果不了解更多有關您正在嘗試做什么的詳細信息,則很難建議。
如果xml中的每個第一級元素都是記錄,即
<rootNode>
<row>...</row>
<row>...</row>
<row>...</row>
</rootNode>
然后,您可以創建一個IDataReader
實現,該實現讀取xml(通過XmlReader
)並將每個作為記錄呈現,以使用SqlBulkCopy
導入。 非常像我在這里的舊答案。
好處:
SqlBulkCopy
是將數據導入數據庫的最快方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.