sql-server - SQL csv 在第 256 个字符处导出截止值
问题描述
我已经存储了通过电子邮件从 SQL 表作为 csv 文件发送数据的过程。除了 csv 将列的数据减少到 256 个字符之外,其他一切都在工作,即使我有一个“@query_result_width = 32767”。由于某种原因,这不起作用。我试过'@query_no_truncate = 1',但排除了标题,我还需要发送标题。有小费吗?
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 的情况下,我假设正在剪切的列在表中声明为 nvarchar/varchar(max FORM
)
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 个字符。
推荐阅读
- swift - 构建失败:无法打开文件(在目标“项目”中)(在目标“”中)
- python - mxnet - 较长的 GPU 初始化时间
- ios - Swift - UITableViewController 内的不可滚动的 UITableViewController
- sql - 测试来自两个不同数据源的数据
- php - 当我在编辑按钮中传递一个 id 并单击然后突然更改每个文件路径并且函数进入每个路径文件时如何解决
- kotlin - 只为 Kotlin/Native 项目构建一个可执行文件
- c# - 如何绕过控制器上的 [SessionExpire] 属性
- powerbi - 如何根据 PowerBI 中的表格小计值进行计数和过滤
- regex - 如何让 sed 记忆模式产生预期的输出?
- postgresql - Sequel -C 复制数据库成功运行但不复制任何表中的任何记录