我对 SQL 查询的 XML 输出有一个非常有趣的问题。
DECLARE @DateStr VARCHAR(30), @sql nvarchar (4000)
SET @DateStr = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(30), dateadd(HH,+2,getdate()),120),'.','-'),':','-'),' ','_');
SET @sql ='bcp "SELECT top 1 [Kod] ,[Ad] FROM [SMFT].[dbo].[AlanKonya] FOR XML PATH(''Cubik'') ,ROOT(''CubicDetails'')" queryout "\\\cgtserver\Development\Cubik_FIFOREPORT_' + @DateStr + '.xml" -T -S CGTSAPP\CGTSSQL120 -w -r -t'
EXEC xp_cmdshell @sql
输出文件看起来像这样。[notepad++]
当我用 WinSCP 编辑器查看时,它看起来像这样 [WinSCP]
文件格式看起来像文本格式
我只想看到这样的[notepad++ ok]
当我打开的其他 XML 文件看起来已格式化时,为什么我的 XML 输出看起来像文本文件?
我在使用 WinScp 传输文件时遇到问题,因为它显示为文本文件
我正在使用 SQL 2012 标准版。我在 SQL 2016 企业版中尝试过,但结果相同
请问你能帮帮我吗?
此致
这是我的新问题
DECLARE @FilePath VARCHAR(4000)DECLARE @SQLStr NVARCHAR(4000),
@Cmd NVARCHAR(4000),
@Ret INT,
@DateStr VARCHAR(30), @sql nvarchar (4000)
SET @DateStr = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(30), dateadd(HH,+2,getdate()),120),'.','-'),':','-'),' ','_');
SELECT @SQLStr = 'SELECT N''<?xml version=''''1.0'''' encoding=''''UTF-8''''?>'' + (SELECT CAST((SELECT * FROM [SMFT].[dbo].Cubik_FIFOREPORT FOR XML PATH(''Cubik'') ,ROOT(''CubicFifoReport''), ELEMENTS XSINIL) AS NVARCHAR(MAX)))'
SELECT @SQLStr AS SQLStr
SELECT @FilePath ='\\cgtserver\DEVELOPMENT\Cubik_FIFOREPORT_' + @DateStr + '.xml'
SELECT @Cmd = ' bcp " ' + @SQLStr + '" queryout '+@FilePath+' -c -r "" -T -S ' +@@ServerName
EXEC @Ret = master.dbo.xp_cmdshell @Cmd