将SQL Server视图导出到XML会每2034个字符插入不需要的CRLF

时间:2015-11-19 11:38:31

标签: sql-server xml

我使用以下SP将视图导出到文件:

SET NOCOUNT ON;
declare @line varchar(255)
set @line = 'bcp "SELECT * FROM erpSqlBe.dbo.vwPriceListStockxx for xml , root(''daily'')" queryout "d:\myFolder\Daily.xml" -c -CACP -Uyyy -Pzzz '
SELECT @line
EXEC xp_cmdshell @line

生成的文件每2034个字符插入一次CRLF,使文件不可读。有什么办法解决这个问题? 我找到了https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=es&dt=t&q=Hello,但我不知道如何应用它。
感谢

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您尝试应用的解决方案是将for xml返回的XML数据转换为varchar(max)。这可以使用CAST({xml_data} AS VARCHAR(MAX))完成,如下所示:

set @line = 'bcp "SELECT CAST((SELECT * FROM erpSqlBe.dbo.vwPriceListStockxx for xml , root(''daily'')) AS VARCHAR(MAX))" queryout "d:\myFolder\Daily.xml" -c -CACP -Uyyy -Pzzz '

使用CONVERT(VARCHAR(MAX), {xml_data})

set @line = 'bcp "SELECT CONVERT(VARCHAR(MAX), (SELECT * FROM erpSqlBe.dbo.vwPriceListStockxx for xml , root(''daily'')))" queryout "d:\myFolder\Daily.xml" -c -CACP -Uyyy -Pzzz '