Как отправить результат запроса в формате CSV?
Я работаю над ETL, и у меня есть это ниже кода sql в моей задаче SQL в пакете SSIS. Вот как я закодировал. Я выбираю данные из таблицы и результат этого запроса в виде файла. Я хочу, чтобы это вложение было отправлено в формате CSV. Как мне это сделать?
EXEC sp_send_dbmail @profile_name='default',
@recipients='dev@null.com',
@subject=@SUB,
@body=@BODY,
@query= 'SELECT [MID],[HID],[MeC],[LC],[RowCDate]
FROM [JBC].[dbo].[Table1] WHERE RowCDate >= GETDATE()
',
@attach_query_result_as_file=1
любая помощь будет очень ценится. Спасибо заранее.
4 ответов
добавлять @query_result_separator
следует сделать трюк.
EXEC sp_send_dbmail @profile_name='default',
@recipients='dev@null.com',
@subject=@SUB,
@body=@BODY,
@query= 'SELECT [MID],[HID],[MeC],[LC],[RowCDate]
FROM [JBC].[dbo].[Table1] WHERE RowCDate >= GETDATE()
',
@attach_query_result_as_file=1,
@query_attachment_filename = 'Results.csv',
@query_result_separator = ','
добавлять @query_result_no_padding = 1
может немного очистить результаты. Все аргументы можно найти здесь
@query='
SET NOCOUNT ON;
select ''sep=;''
select ''Col1'',''Col2'',''Col3'',''Col3''
select CONVERT(NVARCHAR,Col1),ISNULL(Col2, ''''),Col4
FROM ...
SET NOCOUNT OFF;
',
--Additional settings
@query_attachment_filename = '*.csv',
@query_result_separator = ';',
@attach_query_result_as_file = 1,
@query_result_no_padding= 1,
@exclude_query_output =1,
@append_query_error = 0,
@query_result_header =0;
добавлять
'[sep=,' + CHAR(13) + CHAR(10) ColumnName]
с результатом решена проблема
посмотреть источник
этот комментарий к фиолетовой лягушке указывает, вы также можете использовать символ табуляции в качестве разделителя.
также похоже, что этот ответ уже опубликован, мой плохой:https://stackoverflow.com/a/44315682/5758637
(копирование и вставка в случае, если ссылка purple frog будет мертва в будущем):
DECLARE @tab char(1) = CHAR(9)
EXEC msdb.dbo.sp_send_dbmail
@profile_name='donotreply'
,@recipients ='xx@x'
,@query= @query
,@subject= 'xx'
,@attach_query_result_as_file=1
,@query_attachment_filename='xx.csv'
,@query_result_separator=@tab
,@query_result_no_padding=1 –trim
,@query_result_width=32767 –stop wordwrap