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

时间:2017-01-10 10:01:49

标签: sql-server csv

我正在尝试导出我的SQL查询结果,当您执行查询时,我想要自动。我已经看到了使用输出到的示例,我尝试使用但是这会给我一个语法错误,例如Select * From dbo.anyTable Output to,但对我来说,我有哪里和内在在我的查询中加入我之后有一个)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;

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

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)

1 个答案:

答案 0 :(得分:2)

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

FillDataSet(ds)

您必须确保您的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/

Using bcp utility to export SQL queries to a text file

要缩小范围,请给出这个例子,看看会发生什么;

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)