我目前正在加載大量(從1KB到6MB的數千個文件)XML文件,並將它們加載到目標數據庫中。目前,我正在使用SQLXMLBULKLOAD COM對象。我遇到的最大問題之一是COM對象在我們的事務環境中並不總是很好玩。還有其他問題,例如表現;該進程真的開始窒息在接近〜2MB的文件上,需要幾分鐘(如果不再在某些情況下(小時))加載到表中。加載XML文件
所以現在我正在尋找替代方案,其中似乎有兩種形式:
1)喜歡的東西OPENXML,其中XML插入爲XML數據到SQL Server
或
2)解析內存中的XML,並作爲行集加載到數據庫中的解決方案。
這兩種方法都有缺陷,而且我知道在我得出任何結論之前,我將不得不開始做一些原型解決方案的基準測試。 OPENXML方法非常有吸引力的IMO,主要是因爲它承諾一些非常好的性能數字(其他人聲稱從幾小時到幾毫秒)。但是它有將數據存儲爲XML的缺點 - 在我的特定場景中不理想,因爲目標表已經存在,並且許多其他進程依賴查詢和SPROCS將那些表作爲普通行集數據進行查詢。
我選擇什麼解決方案,我必須滿足以下要求:
1)必須接受任何XML文件。客戶(在商業意義上)只需要提供一個XSD,併爲數據提供適當的目標數據庫/表。
2)單個文件(從不大於〜6MB)必須在1分鐘內處理(理想情況下甚至比這更快)。
3)插入的數據必須能夠適應現有的查詢和存儲過程(即必須最終落得正常行集數據)
所以我的問題是,你有沒有在這種情況下的經驗,什麼是你的想法和見解?
我並不完全反對類似OPENXML的解決方案,只要數據最終可以作爲普通行集數據在某個點。我也對您可能遇到的第三方解決方案感興趣,這是我們流程的重要組成部分,如果我們爲我們提供最佳和最穩定的解決方案,我們願意花費一些錢。我也不反對「自己動手」的建議,或Codeplex上的事情等。我遇到了LINQ to XSD項目,但找不到有關其功能的文檔(只是作爲我感興趣的東西的一個例外)
是否有任何理由不使用SSIS,因爲這是它的設計目的? – Lloyd 2012-02-18 14:39:59
我並不反對SSIS,這是我們正在考慮的一種選擇。我不是一個SSIS的人,你能告訴我什麼是優點嗎? – Didaxis 2012-02-18 14:51:56
我更喜歡SSIS,因爲如果軟件包或其他參數發生變化,那麼沒有配置文件或重新編譯項目只是修改或更新BMO IDE中的SSIS包。下面是我之前跟進的一些SO鏈接... http:// stackoverflow。com/questions/7203492/imports-and-validating-xml-file-using-ssis-or-just-plain-t-sql http://stackoverflow.com/questions/6956409/ssis-reading-multiple-xml-files -from-folder/6957825#6957825 – Lloyd 2012-02-18 14:58:54