SQL csv 在第 256 个字符处导出 cut-off
SQL csv exports cut-off at 256th character
我存储了通过电子邮件从 SQL table 作为 csv-file 发送数据的过程。
其他一切都在工作,除了 csv 将列的数据削减到 256 个字符,即使我有一个 '@query_result_width = 32767'。由于某种原因,这是行不通的。我试过 '@query_no_truncate = 1' 但排除了 headers,我还需要发送 headers。有什么建议吗?
declare @qry nvarchar(max);
Select @qry= 'USE Erve Update FORM Set Instructions = REPLACE(REPLACE(Instructions, CHAR(10), ""),CHAR(9), CHAR(32)) from FORM; select * from FORM'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'NoReply',
@recipients ='some@receiver.com',
@query = @qry,
@body = 'Liitteenä kaikki erillisveloitettavat rivit.',
@subject = 'Erillisveloitettavat rivit',
@attach_query_result_as_file = 1 ,
@query_attachment_filename = 'ErveKaikki-rivit.csv',
@query_result_separator = ' ',
@query_result_width = 32767,
@query_result_no_padding = 1,
@query_result_header = 1
END
聚会有点晚了,我希望你现在已经解决了你的问题哈哈
但是对于任何遇到这个问题的人来说,对我有用的是改变我的列的声明(我在 SELECT 查询中使用的那些来创建我的 csv 输出)从 nvarchar/varchar (max) 至 nvarchar/varchar(n),n 为固定值。
所以在 OP 的情况下,我假设被剪切的列在 FORM
table
中声明为 nvarchar/varchar(max)
Select @qry= 'USE Erve Update FORM Set Instructions = REPLACE(REPLACE(Instructions, CHAR(10), ""),CHAR(9), CHAR(32)) from FORM; select * from FORM'
我使用与 OP 相同的代码发送电子邮件
EXEC msdb.dbo.sp_send_dbmail
@profile_name = @profile,
@recipients = @email_to_address,
@subject = @email_subject,
@query = @Query,
@attach_query_result_as_file = 1,
@query_attachment_filename = 'filename.csv',
@query_result_separator = @tab,
@query_result_no_padding = 1,
@query_result_width = 32767
这再次对我有用,因为我能够更改列定义,而且我确信这些列的数据不会超过 8000 个字符。
我存储了通过电子邮件从 SQL table 作为 csv-file 发送数据的过程。 其他一切都在工作,除了 csv 将列的数据削减到 256 个字符,即使我有一个 '@query_result_width = 32767'。由于某种原因,这是行不通的。我试过 '@query_no_truncate = 1' 但排除了 headers,我还需要发送 headers。有什么建议吗?
declare @qry nvarchar(max);
Select @qry= 'USE Erve Update FORM Set Instructions = REPLACE(REPLACE(Instructions, CHAR(10), ""),CHAR(9), CHAR(32)) from FORM; select * from FORM'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'NoReply',
@recipients ='some@receiver.com',
@query = @qry,
@body = 'Liitteenä kaikki erillisveloitettavat rivit.',
@subject = 'Erillisveloitettavat rivit',
@attach_query_result_as_file = 1 ,
@query_attachment_filename = 'ErveKaikki-rivit.csv',
@query_result_separator = ' ',
@query_result_width = 32767,
@query_result_no_padding = 1,
@query_result_header = 1
END
聚会有点晚了,我希望你现在已经解决了你的问题哈哈
但是对于任何遇到这个问题的人来说,对我有用的是改变我的列的声明(我在 SELECT 查询中使用的那些来创建我的 csv 输出)从 nvarchar/varchar (max) 至 nvarchar/varchar(n),n 为固定值。
所以在 OP 的情况下,我假设被剪切的列在 FORM
table
Select @qry= 'USE Erve Update FORM Set Instructions = REPLACE(REPLACE(Instructions, CHAR(10), ""),CHAR(9), CHAR(32)) from FORM; select * from FORM'
我使用与 OP 相同的代码发送电子邮件
EXEC msdb.dbo.sp_send_dbmail
@profile_name = @profile,
@recipients = @email_to_address,
@subject = @email_subject,
@query = @Query,
@attach_query_result_as_file = 1,
@query_attachment_filename = 'filename.csv',
@query_result_separator = @tab,
@query_result_no_padding = 1,
@query_result_width = 32767
这再次对我有用,因为我能够更改列定义,而且我确信这些列的数据不会超过 8000 个字符。