我有一個表0123',它包含幾十萬行XML,我希望將其作爲單獨的XML文件提取。將SQL表中的XML列行導出到單個文件中
大致是格式化爲這樣:
+--------------+------------------+
| REFERENCE_ID | REFERENCE_XML |
+--------------+------------------+
| 1 | <xml>...</xml> |
| 2 | <xml>...</xml> |
| 3 | <xml>...</xml> |
| 4 | <xml>...</xml> |
| ... | <xml>...</xml> |
| 70000 | <xml>...</xml> |
+--------------+------------------+
我想通過每一行和批量出口各REFERENCE_XML
列,並將它命名爲REFERENCE_ID
循環。
我的輸出文件夾設置將如下這樣:
C:\References\1.xml
C:\References\2.xml
C:\References\3.xml
C:\References\4.xml
C:\References\...
C:\References\70000.xml
我能找到執行單個靜態行操作粗略查詢,但我有困難的時候,找出最好的辦法創建一個WHILE
循環或CURSOR
。如何使文件名和WHERE
子句動態循環遍歷REFERENCES
表中的每一行,並將所有XML導出爲單個文件?
DECLARE @fileName VARCHAR(MAX)
DECLARE @sqlStr VARCHAR(MAX)
DECLARE @sqlCmd VARCHAR(MAX)
SET @fileName = 'C:\References\1.xml' -- I need the integer value to be dynamic per row.
SET @sqlStr = SELECT REFERENCE_XML FROM REFERENCE_DB.dbo.REFERENCES WHERE REFERENCE_ID = 1' -- I need the REFERENCE_ID to be dynamic per row.
SET @sqlCmd = 'bcp "' + @sqlStr + '" queryout ' + @fileName + ' -w -T'
EXEC xp_cmdshell @sqlCmd
通過一些修改(特別是對@sqlStr行),我能夠成功完成這項工作。我沒有發現有必要將XML作爲NVARCHAR。 bcp能夠在沒有任何問題的情況下處理XML。謝謝! – PicoDeGallo