我有一个SQL查询,我使用For XML Path将结果生成为XML。
任何人都可以帮我将XML输出转换为“ a.xml ”文件并保存在计算机的特定文件夹中吗?
另外想知道,除了 BCP 之外还有其他方法可以实现吗?
答案 0 :(得分:4)
您可以尝试使用xp_cmdshell
....
-- Read your query results into an XML variable
DECLARE @xml AS XML = (SELECT * FROM YourTable FOR XML PATH)
-- Cast the XML variable into a VARCHAR
DECLARE @xmlChar AS VARCHAR(max) = CAST(@xml AS VARCHAR(max))
-- Escape the < and > characters
SET @xmlChar = REPLACE(REPLACE(@xmlChar, '>', '^>'), '<', '^<')
-- Create command text to echo to file
DECLARE @command VARCHAR(8000) = 'echo ' + @xmlChar + ' > c:\test.txt'
-- Execute the command
EXEC xp_cmdshell @command
如果您想要更多控制,也可以尝试使用Powershell命令,例如设置编码...
DECLARE @command VARCHAR(8000) = 'powershell -Command "Set-Content -Encoding UTF8 C:\test.txt \"' + @xmlChar + '\""'
一些笔记......
命令有8000个字符长度限制,因此对大文件没有好处。
如果将文件保存到映射驱动器,它将在数据库服务器上查找该驱动器。因此,C:\将引用服务器的C:\驱动器,而不是您运行Management Studio的位置。
运行xp_cmdshell
需要特殊权限。
点击here了解详情。