我将数据从SQL Server表导出到.csv
文件,然后我使用sp_send_email
通过电子邮件将数据发送给该文件。
我的问题是这个值:
Cantata Number 212 "Peasants Cantata", BWV 212
该值被分成两个列,通过电子邮件发送到.csv
文件中。该值应仅在一列中。
某些标题可能包含逗号,需要将其留在字符串中以供这些实例使用。
例如:
Cantata Number 212 Peasants Cantata" BWV 212"
我尝试了这种方法,但无法正常工作:
注意:此SELECT
语句位于视图vw_WeeklyReport
SELECT TOP 100 PERCENT
'"' + [p].[Title] + '"' [Title]
FROM
table
导出数据并通过电子邮件发送.csv
文件的代码:
BEGIN
SET NOCOUNT ON;
DECLARE @qry VARCHAR(8000);
-- Create the query, concatenating the column name as an alias
SET @Qry = 'SET NOCOUNT ON; SELECT Title FROM [vw_WeeklyReport] SET NOCOUNT OFF';
-- Send the e-mail with the query results in attachment.
EXEC [msdb].[dbo].[sp_send_dbmail]
@profile_name = 'default',
@recipients = '6lack@email.com',
@subject = 'Weekly Report',
@body = 'An attachment has been included in this email.',
@query_attachment_filename = 'WeeklyRep.csv',
@query = @qry,
@attach_query_result_as_file = 1,
@query_result_separator = ',',
@query_result_width = 32767,
@query_result_no_padding = 1;
END;
答案 0 :(得分:1)
如果字段中有逗号(或分隔符),则该字段应使用双引号括起来,并且其中的任何双引号都必须使用另一个双引号进行转义:
"Cantata Number 212 ""Peasants Cantata"", BWV 212"
在字段周围使用双引号后,还应引用包含双引号的所有字段,并在引号内转义。
也许你可以找一个使用引用字段导出到csv的选项。
删除所有逗号也可以是一个选项,但之后会丢失一些信息。
另一方面,如果只有一列(如SELECT语句中那样),则根本不需要使用csv。可以使用纯文本文件。
答案 1 :(得分:0)
将存储过程中的查询更改为以下内容:
SET @Qry = 'SET NOCOUNT ON; SELECT replace(Title, ',', '') as Title FROM [vw_WeeklyReport] SET NOCOUNT OFF';
请注意,这是未经测试的,但应该为您提供您正在寻找的内容。这是假设剥离逗号是可以接受的,如最初的帖子所示。如果逗号需要保持完整,那么答案就不那么简单了。