在我的存储过程中,我想将选择结果导出到.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'
答案 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