我有一個 XML,其中有許多記錄作為節點。我需要將每條記錄以 xml 格式保存在 XML 資料型別列中的 SQL 服務器表中。
我可以在 SSIS 中使用“XML 任務編輯器”執行此任務以計算所有節點并使用“For Loop Container”并使用“XML 任務編輯器”讀取節點值并將其保存在資料庫中。
另一種選擇是使用腳本任務,讀取 XML 檔案并將每個節點保存在一個回圈中。
請建議一種對大檔案有效的更好方法。
下面是輸入 XML 檔案的示例。我需要在 SQL Server 資料庫表中以 XML 形式保存每個(下面示例中的 3 條記錄)“RECORD”完整節點,該表具有 xml 資料型別的列。

uj5u.com熱心網友回復:
我建議采用兩步法。
- 在資料流任務中使用 SSIS匯入列轉換將整個 XML 檔案加載到暫存表單行列中。
- 使用存盤程序將單獨的 RECORD XML 片段生成為單獨的行,并將它們插入到最終目標表中。
資料庫
DECLARE @staging_tbl TABLE (id INT IDENTITY PRIMARY KEY, xmldata XML);
INSERT INTO @staging_tbl (xmldata) VALUES
(N'<root>
<RECORD UI="F298AF1F"></RECORD>
<RECORD UI="4C6AAA65"></RECORD>
</root>');
-- INSERT INTO destination_table (ID, xml_record)
SELECT id
, c.query('.') AS xml_record
FROM @staging_tbl
CROSS APPLY xmldata.nodes('/root/RECORD') AS t(c);
輸出
| ID | xml_記錄 |
|---|---|
| 1個 | <RECORD UI="F298AF1F" /> |
| 1個 | <RECORD UI="4C6AAA65" /> |
uj5u.com熱心網友回復:
您可以使用 nodes() 方法回傳 xml 檔案中的節點行集。這是最簡單的例子:
select node_table.xml_node_column.query('.') node
from xmldocument
cross apply xmldocument.nodes('/root/RECORD') node_table(xml_node_column)
https://learn.microsoft.com/en-us/sql/t-sql/xml/nodes-method-xml-data-type?view=sql-server-ver16
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/535502.html
