SQL Server存储过程将选择结果导出为CSV

时间:2014-11-06 07:30:02

标签: sql sql-server tsql stored-procedures export-to-excel

在我的存储过程中,我想将选择结果导出到.CSV文件。我需要编写一个存储过程,从不同的表中选择一些数据并将其保存到.CSV文件中。

选择零件已准备就绪

 SELECT DISTINCT 
                  PER.NREGNUMBER_PERNUM AS [Registration Number], 
                  PER.CFAMNAME_PER AS [Family Name], 
                  PER.CGIVNAME_PER AS [Given Name], 
                  CONVERT(varchar(10), CONVERT(date, PER.DBIRTHDATE_PER, 106), 103) AS [Birth Date], 
                  PER.CGENDER_PERGEN as [Gender],
                  PHONE.MOBILE_NUMBER
        FROM      PERSON AS PER 
                  LEFT OUTER JOIN
                  PHONE ON PER.NREGNUMBER_PERNUM = PHONE.NREGNUMBER_PPHPER AND PHONE.CPRIMARY_PPH = 'Y'

3 个答案:

答案 0 :(得分:2)

任务是我必须在指定时间从数据库中将一些数据导出到 .CSV 。在开始时我们想使用Windows调度程序来运行stp。 STP必须能够导出数据。但我找不到办法。相反,我们所做的就是创建简单的STP,只带来数据。我们创建了批量文件,该文件调用STP并将结果导出到 .CSV 文件。批处理文件很简单

sqlcmd -S Etibar-PC\SQLEXPRESS -d MEV_WORK -E -Q "dbo.SelectPeople" -o "MyData1.csv" -h-1 -s"," -w 700

dbo.SelectPeople是STP
Etibar-PC \ SQLEXPRESS是Schema
MEV_WORK是数据库名称。

答案 1 :(得分:0)

要从表格结果创建CSV字符串,请按照

上的说明进行操作

http://blog.sqlauthority.com/2009/11/25/sql-server-comma-separated-values-csv-from-table-column/

据我所知,没有办法直接使用TSQL将数据保存到磁盘上的文件中。要保存文件,可以创建一个SQL-CLR存储过程,而不是可以使用常规C#代码的TSQl存储过程。

答案 2 :(得分:0)

我已经建立了一个程序来帮助你们所有人

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- example exec Sys_Database_exportToCsv 'select MyEmail from 
QPCRM.dbo.Myemails','D:\test\exported.csv'

create PROCEDURE Sys_Database_exportToCsv

(
@ViewName nvarchar(50),
@exportFile nvarchar(50)
)

AS

BEGIN

SET NOCOUNT ON;

EXEC sp_configure 'show advanced options', 1;  

RECONFIGURE; 

EXEC sp_configure 'xp_cmdshell', 1;  

RECONFIGURE; 

Declare @SQL nvarchar(4000)

Set @SQL = 'Select * from ' + 'QPCRM.dbo.Myemails'

Declare @cmd nvarchar(4000)

SET @cmd = 'bcp '+CHAR(34)+@ViewName+CHAR(34)+' queryout 
'+CHAR(34)+@exportFile+CHAR(34)+' -S '+@@servername+' -c -t'+CHAR(34)+','+CHAR(34)+' -r'+CHAR(34)+'\n'+CHAR(34)+' -T'

exec master..xp_cmdshell @cmd

EXEC sp_configure 'xp_cmdshell', 0;  

RECONFIGURE; 

EXEC sp_configure 'show advanced options', 0;  

RECONFIGURE; 

END

GO