在服务器上的目录中输出 SQL 服务器 table 到 XML

Output SQL Server table to XML in a directory on the server

我正在尝试导出我的

select column1, column2 
from table1 

成一个XML文件,保存到服务器上的c:\Test\目录下。

我还希望在 运行 使用相同的输出 xml 名称再次查询时覆盖文件。

是否可以在不创建 SSIS 作业的情况下执行此操作。我已经使用了 FOR XML AUTOFOR XML PATH 功能,但这些功能不会为您提供将打开的成型 XML 以及保存到某个位置的选项。

任何关于如何做到这一点的想法都会很好!

我有 运行 在 A运行 的评论后如下:

我有运行以下:

DECLARE @fileName VARCHAR(50) DECLARE @sqlStr VARCHAR(1000) DECLARE @sqlCmd VARCHAR(1000) 
SET @fileName = 'C:\test.xml'  SET @sqlStr = 'select TOP 50 [Key_Scores],    [Total_Scores] from Futures.[dbo].[Aco_Scores] FOR XML PATH (''Key_Scores''),    ROOT (''Key_Scores.Total_Scores'')'
SET @sqlCmd = 'bcp "' + @sqlStr + '" queryout ' + @fileName + ' -w -T' EXEC xp_cmdshell @sqlCmd

Table 称为 Aco_Scores,2 列称为 Key_Scores 和 Total_Scores。

错误 = [Microsoft][SQL Server Native Client 11.0][SQL Server]无效的对象名称 'Futures.dbo.Aco_Scores'.

错误 = [Microsoft][SQL Server Native Client 11.0]无法解析列级排序规则

我输入的列有误吗?

我尝试过的新查询是:

此查询生成了一个无法打开的 XML 文件,实际上我已经尝试了 PATH 和 AUTO,但没有成功。 -- URL 总结旋转

  DECLARE @fileName VARCHAR(50) DECLARE @sqlStr VARCHAR(1000) DECLARE @sqlCmd VARCHAR(1000) 
  SET @fileName = 'C:\XML\Summary_Rotary.XML'  SET @sqlStr = 'select TOP 8 [Top_8_Hits], [Best_Score], [Lowest_Score], [Average_Score], [Final_Rating] from Futures.[dbo].[Summary_Rotary] FOR XML AUTO' 
 SET @sqlCmd = 'bcp "' + @sqlStr + '" queryout ' + @fileName + ' -w -T'  EXEC xp_cmdshell @sqlCmd

这会产生一个无效的 XML

有几种方法可以做到这一点。

首先,您可以在您的代码中添加 FOR XML AUTO,它将在 XML 中显示结果。

然后,您可以使用 SSMS 将结果导出到文件。

Tools -> Options -> Query Results -> Sql Server -> General -> Default destination... 用于结果归档或 Ctrl + Shift + F

大量基于 T-SQL 代码的示例 here