如何自动将sql查询结果保存到.csv文件

Cia*_*hue 1 sql-server csv

我正在尝试导出我的 sql 查询结果,我希望在您执行查询时自动执行该结果。我已经看到了使用我尝试使用的输出的示例,但这会给我一个语法错误,就像示例一样,Select * From dbo.anyTable Output to但是对我来说,在我的查询中有一个where 和内部连接地方,我有一个) a在它之后,这就是我认为是问题。我知道可以通过右键单击鼠标并将结果另存为来保存它,但这不是我理想中想要的,因为我想自动化我正在尝试做的整个系统。

例如,我想尝试使用我的部分查询来执行此操作:

Select top 1 a.NAME, COUNT(*) OVER() AS totalRows
From (Select de.NAME From dbo.DEPLOYMENT_ENVIRONMENT as de
Inner join dbo.DEPLOYMENT_RESULT as dr 
on dr.ENVIRONMENT_ID = de.ENVIRONMENT_ID
Where @filecontent = de.ENVIRONMENT_ID) a
OUTPUT TO @myPath
FORMAT TEXT
QUOTE '"'
WITH COLUMN NAMES;
Run Code Online (Sandbox Code Playgroud)

编辑 我有以下查询,但它不产生文件或任何错误我做错了什么?

Set @OutputFilePath = 'C:\DeploymentPipelines'
Set @ExportSQL = 'EXEC master.dbo.xp_cmdshell ''bcp 
"Select top 1 a.NAME, COUNT(*) OVER() AS totalRows
From (Select de.NAME From dbo.DEPLOYMENT_ENVIRONMENT as de
Inner join dbo.DEPLOYMENT_RESULT as dr 
on dr.ENVIRONMENT_ID = de.ENVIRONMENT_ID
Where @filecontent = de.ENVIRONMENT_ID) a"
queryout "' + @OutputFilePath + '\results4.csv" -T -c -t -S DEV-BUILD01\SQLSERVER'''
Exec(@ExportSQL)
Run Code Online (Sandbox Code Playgroud)

Ric*_*ner 5

我有一些存储过程来修改 .csv 文件,我发现使用 bcp 是我在 TSQL 脚本中执行此操作的最佳方法。语法是这样的(取自我的一个现场示例;

DECLARE @OutputFilePath nvarchar(max); SET @OutputFilePath = 'C:\Users\VirtualMachine1\Desktop\MasterFullOutput\Phase03'

DECLARE @ExportSQL nvarchar(max); SET @ExportSQL = N'EXEC master.dbo.xp_cmdshell ''bcp "SELECT TextData FROM DataConversionDB.dbo.DataScripts ORDER BY RowNumber" queryout "' + @OutputFilePath + '\OutputData.csv" -T -c -t -S WIN-SIITTJOB7OV'''

EXEC(@ExportSQL)
Run Code Online (Sandbox Code Playgroud)

您必须确保您的 SQL Server 服务登录名可以访问您要输出到的文件路径(不是您自己的权限,而是 SQL Server NT 服务的权限)。

这里有一些关于 bcp 命令的额外阅读;

https://msdn.microsoft.com/en-GB/library/aa337544.aspx

https://www.simple-talk.com/sql/database-administration/working-with-the-bcp-command-line-utility/

使用 bcp 实用程序将 SQL 查询导出到文本文件

为了缩小范围,看看这个例子会发生什么;

DECLARE @ExportSQL nvarchar(max);

SET @ExportSQL = 'EXEC ..xp_cmdshell ''bcp "SELECT TOP 1 FROM sys.objects " queryout "C:\DeploymentPipelines\results4.csv" -T -c -t -S DEV-BUILD01\SQLSERVER'''

Exec(@ExportSQL)
Run Code Online (Sandbox Code Playgroud)