簡體   English   中英

調用以大XML文件作為參數的MSSQL過程的最佳方法是什么?

[英]What is the best approach to invoke a MSSQL procedure, which takes a large XML file as an argument?

我正在開發一個在每次啟動應用服務器時在MSSQL DB中插入XML文件內容的應用。

XML包含相關表的多個記錄。 存儲的proc將XML文件的內容作為(TEXT)參數,創建指針( sp_xml_preparedocument )並使用OPENXML插入表中。

我需要從XML文件所在的應用程序服務器中使用JDBC(或者可以是SQLCMD )執行該過程。

XML文件大約有160MB,現在我通過讀取較大的String對象的形式將XML文件發送給CallableStatement ,但它非常耗時/占空間/耗資源。

我不知道這是否是公認的最佳做法,但是如果我這樣做,我認為這很可能是以下方法的候選人:

  1. 將XML轉換為易於加載的文件,例如BCP兼容腳本
  2. BCP /將數據加載到臨時表/臨時表中
  3. SQL合並數據。 這樣的好處是您可以針對用例優化SQL。

在這種情況下,無需“傳遞”內存中的大量Blob,從而無需依賴MSXML即可依賴SQL Server BCP加載技術的高級處理。

在這種情況下,對SQL的調用是簡單的sp調用,其參數指向文件。


如果BCP不是您的最佳選擇,那么使用SSIS的類似解決方案也許可行。


最后,如果必須使用XML文件,則可以按順序將文件名傳遞給SQL CLR過程,該過程會將其加載到SQL內存中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM