[英]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.