2015-02-05 23 views
1

目前,我們公司正在將應用程序遷移到雲(Azure),並且我們有一個命令行應用程序,它執行以下步驟。將大量XML插入到sql azure數據庫的正確方法

  1. 下載包含帶更新記錄的壓縮和簽名xml文件列表的文件。
  2. 如果有更新或新記錄
  3. 下載壓縮XML文件
  4. 解壓縮XML文件
  5. Unsign的XML文件
  6. 將每個XML到使用存儲過程中該腳本態表

    DECLARE @bulkQuery nvarchar(max) = N'INSERT INTO #BulkTable SELECT BulkColumn FROM Openrowset(Bulk ''' + @FilePath + ''', Single_Blob) X';

    EXECUTE sp_executesql @bulkQuery

  7. 將目標表與時態表合併。

但是,因爲我發現了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條記錄)

我知道第二種方法不是最好的辦法,我一直在尋找如何改善它(正確的方式),但我還沒有找到類似的東西。

希望你能幫助我, 非常感謝。

回答

0

看到這個論壇的帖子,如果有幫助:https://social.msdn.microsoft.com/Forums/azure/en-US/861d2307-43b9-4a87-99d9-a406ad581ea3/bulk-load-xml-files-to-sql-azure?forum=windowsazuredata

至於我,我會上傳XML文件到Azure的Blob存儲,然後運行Worker角色,會做進口。

+0

謝謝@DixonD您的快速回復。我嘗試過使用BCP並且沒有成功,它看起來像BCP只在xml結構不復雜的情況下才起作用,換句話說,這就是我首先「預處理」了存儲過程中的擴展數據(第一個應用程序),並在LINQ查詢(第二應用) – 2015-02-05 17:54:44

+0

的XML文件的結構是: ' ' – 2015-02-05 17:59:09

相關問題