在服务器上的目录中输出 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 AUTO
和 FOR 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。
我正在尝试导出我的
select column1, column2
from table1
成一个XML文件,保存到服务器上的c:\Test\
目录下。
我还希望在 运行 使用相同的输出 xml 名称再次查询时覆盖文件。
是否可以在不创建 SSIS 作业的情况下执行此操作。我已经使用了 FOR XML AUTO
和 FOR 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。