如何修正BCP query out导出XML文件时出现的多余节点格式问题?
XML导出多余节点修正方案
修正后完整代码
SET @CommandOUT = ' bcp "SELECT CAST(XMLDATA AS NVARCHAR(MAX)) FROM [INTELLECTION].[dbo].[XMLwithOpenXMLout] WHERE ID = ' + @Hist_ID + '" ' + 'queryout "D:\New folder\' + @Hist_ID + '.xml" -S INTEL-SQL01\OUTSOURCECAPTURE -T -w -r -t' EXEC xp_cmdshell @CommandOUT
关键修改点
- 移除了原语句中冗余的
FOR XML AUTO, root(), elements参数:XMLDATA字段本身已经是符合要求的XML结构,重复执行XML序列化操作会额外嵌套row、XMLDATA两层多余节点 - 新增
CAST(XMLDATA AS NVARCHAR(MAX))类型转换:避免BCP处理XML类型字段时自动添加额外格式转义 - 去掉了查询中多余的
row表别名:防止别名被识别为节点名嵌套到输出内容中
可选调整
如果需要导出UTF-8编码的XML文件,将参数-w替换为-C 65001即可,65001是UTF-8对应的Windows代码页编号。
内容的提问来源于stack exchange,提问作者JCW
相关产品推荐
相关产品推荐

