目前,我們公司正在將應用程序遷移到雲(Azure),並且我們有一個命令行應用程序,它執行以下步驟。將大量XML插入到sql azure數據庫的正確方法
- 下載包含帶更新記錄的壓縮和簽名xml文件列表的文件。
- 如果有更新或新記錄
- 下載壓縮XML文件
- 解壓縮XML文件
- Unsign的XML文件
將每個XML到使用存儲過程中該腳本態表
DECLARE @bulkQuery nvarchar(max) = N'INSERT INTO #BulkTable SELECT BulkColumn FROM Openrowset(Bulk ''' + @FilePath + ''', Single_Blob) X';
EXECUTE sp_executesql @bulkQuery
將目標表與時態表合併。
但是,因爲我發現了OPENROWSET命令不是在SQL Azure中可用的(我認爲這是由於SQL Azure數據庫不具有對文件的本地訪問),我嘗試了不同的方法:
使用網絡招聘時,#6步驟是這樣的:
- 6.1加載XML到XmlDocument對象
- 6.2,以組織的記錄中創建了XmlDocument的LINQ查詢
- 6.3對於查詢中的每個記錄,使用LINQ to SQL進行插入。
事實是,第二種方法可行,但每個xml文件需要3個小時,而所有xml文件需要20分鐘。 (我忘了說,通常應用程序下載4個XML文件,每個文件包含250,000條記錄)
我知道第二種方法不是最好的辦法,我一直在尋找如何改善它(正確的方式),但我還沒有找到類似的東西。
希望你能幫助我, 非常感謝。
謝謝@DixonD您的快速回復。我嘗試過使用BCP並且沒有成功,它看起來像BCP只在xml結構不復雜的情況下才起作用,換句話說,這就是我首先「預處理」了存儲過程中的擴展數據(第一個應用程序),並在LINQ查詢(第二應用) – 2015-02-05 17:54:44
的XML文件的結構是: ' Contribuyente> ' –
2015-02-05 17:59:09