sql - XML 输出在文件中被截断,但在 SSMS 中不被截断
问题描述
在参考了这两个帖子之后 - XML 输出在 SQL 中被截断,使用SQL Server 中的 XML OPTIONS 生成 XML 输出
并在 SQL Server Management Studio (SSMS) 中设置为 - SSMS 中的选项设置以将 XML 输出数据设置为无限大小。
DECLARE @xmldata xml
SET @xmldata = (
SELECT
'DATE' as 'column/@name', [DATE] as 'column', null,
'ID' as 'column/@name', [ID] as 'column', null,
'NAME' as 'column/@name', [NAME] as 'column', null
FROM TEST_TBL
FOR XML PATH('row'), ROOT('resultset')
)
SELECT @xmldata AS returnXML
SSMS 中的 XML 输出是可以的。但是如果我运行 SQLCMD.EXE 来生成如下的 XML 输出文件,
DECLARE @xmldata xml
SET @xmldata = (
SELECT
'DATE' as 'column/@name', [DATE] as 'column', null,
'ID' as 'column/@name', [ID] as 'column', null,
'NAME' as 'column/@name', [NAME] as 'column', null
FROM TEST_TBL
FOR XML PATH('row'), ROOT('resultset')
)
SELECT @xmldata AS returnXML
:OUT abc.XML
GO
输出文件 - abc.XML 在单行中被截断,长度为 1,048,578。
有没有办法将 XML 输出文件 - abc.XML 设置为 SSMS 中的“无限”大小?
谢谢你的帮助!
解决方案
DECLARE @Path VARCHAR(4000), @AUTCMD VARCHAR(4000), @XMLCMD VARCHAR(4000)
SET @Path = 'YourPathHere'
SET @AUTCMD = 'net use ' + @Path + ' YourPasswordHere /USER:YourUserNameHere'
SET @XMLCMD = 'bcp "DECLARE @xmldata xml SET @xmldata = (SELECT ''DATE'' as ''column/@name'', [DATE] as ''column'', null, ''ID'' as ''column/@name'', [ID] as ''column'', null, ''NAME'' as ''column/@name'', [NAME] as ''column'', null FROM TEST_TBL FOR XML PATH(''row''), ROOT(''resultset'')) SELECT @xmldata AS returnXML" queryout "' + @Path + '\abc.XML" -S ' + @@SERVERNAME + ' -T -c'
exec xp_cmdshell @AUTCMD
exec xp_cmdshell @XMLCMD
推荐阅读
- sql-server-2012 - SQL Server 中优化的分页查询
- c - 给定数组中有多少个字符但有空格
- mongodb - 使用 Akk-Http 从 Scala 中的 mongodb 获取 100K 记录时出错
- django - 在 django 视图中按降序排序
- junit5 - 如何使用 JUnit 5 中其他类中定义的@MethodSource
- javascript - javascript中for循环和本地存储的问题
- python - 在 Python 中使用带有 Selenium 的默认 Chrome 配置文件
- amazon-web-services - AWS Cloudfront 可用性 SLA
- r - 异方差残差图与 Pinhiero 和 Bates 中显示的图不匹配
- pandas - 使用 Keras flow_from_dataframe 进行图像分类