J'exporte des données à partir d'une table SQL Server vers un fichier .csv
, puis j'utilise sp_send_email
pour envoyer le fichier avec des données.SQL Server: ponctuation d'échappement dans la chaîne
Mon problème est avec cette valeur:
Cantata Number 212 "Peasants Cantata", BWV 212
La valeur se divise en deux colonnes dans le fichier .csv
qui obtient envoyé par courrier électronique. Cette valeur devrait être seulement dans une colonne.
Certains titres peuvent contenir une virgule qui doit être laissée dans la chaîne pour ces instances.
Par exemple:
Cantata Number 212 Peasants Cantata" BWV 212"
J'ai essayé cette méthode, mais ne fonctionne pas:
Remarque: Cette déclaration SELECT
réside à l'intérieur d'une vue vw_WeeklyReport
SELECT TOP 100 PERCENT
'"' + [p].[Title] + '"' [Title]
FROM
table
Le code exporte les données et envoie un e-mail au fichier .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 = '[email protected]',
@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;
S'il est acceptable de supprimer les virgules, vous devriez utiliser 'replace' dans SQL pour faire exactement cela. – user2366842
Certaines valeurs contiennent des virgules et il est nécessaire de laisser les virgules dans la chaîne. –
L'autre option consisterait à retravailler l'exportation pour utiliser un délimiteur différent en plus d'une virgule, bien que cela soit probablement hors de la portée d'une seule question SO. – user2366842