簡體   English   中英

將巨大的 XML 批量導入 SQL Cellt

[英]Bulk import of a huge XML into an SQL Cellt

我正在嘗試將 XML 文件導入 SQL 單元格以進行處理。 我的第一個想法是做一個 OPENROWSET 來保留 XML 並用 NODES 來划分它。 其中一個 XML 太大而無法保存在 CELL 中,因此 OPENROWSET 切斷了 XML,因此無法使用它。 那是代碼:

 DECLARE @XMLwithOpenXML TABLE ( Id INT IDENTITY PRIMARY KEY, XMLData XML, LoadedDateTime DATETIME ) INSERT INTO @XMLwithOpenXML(XMLData, LoadedDateTime) SELECT CONVERT(XML, BulkColumn) AS BulkColumn ,GETDATE() FROM OPENROWSET(BULK 'C:\temp\PP015.xml', SINGLE_CLOB) AS x; SELECT * FROM @XMLwithOpenXML

第二個選項是使用 BCP 來做同樣的事情,但我得到了一個錯誤。

 DECLARE @sql NVARCHAR(500) SET @sql = 'bcp [ExternaDB].[dbo].[xmltab] IN "C:\temp\PP015.xml" -T -c' EXEC xp_cmdshell @sql select * from xmltab

在此處輸入圖像描述

我想知道我的方法是否正確(當我知道如何在 SQL 單元格中使用 XML 時如何使用它)以及如何將完整的 XML 批量導入沒有長度約束的單元格。

文件系統上 XML 文件的大小是多少?

請嘗試以下解決方案。 它與您的非常相似,但有三個不同之處:

  • SINGLE_BLOB而不是SINGLE_CLOB
  • 不需要CONVERT(XML, BulkColumn)
  • DEFAULT子句用於LoadedDateTime

此外,您可以將 SSIS 用於該任務。 SSIS 有一個沒有 XML 文件大小限制的流式 XML 源適配器。

SQL

DECLARE @tbl TABLE(
    ID INT IDENTITY PRIMARY KEY,
    XmlData XML,
    LoadedDateTime DATETIME DEFAULT (GETDATE())
);

INSERT INTO @tbl(XmlData)
SELECT BulkColumn
FROM OPENROWSET(BULK N'C:\temp\PP015.xml', SINGLE_BLOB) AS x;

SELECT * FROM @tbl;

感謝您的幫助,但我找到了解決方案。 SQL 已配置為 XML 數據檢索的最大字符數。 為了解決這個問題,我們只需要重新配置這個參數。

在此處輸入圖像描述

暫無
暫無

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

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