我有一个自动批处理过程,它使用sqlcmd从数据库中提取数据并将其转储到文本文件中。该数据库中的许多字段都是varchar(max)
类型,Sqlcmd将这些字段限制为256个字符,除非我向sqlcmd调用中的标志添加-y 0
之类的内容。
这为我提供了大于256个字符的字段的全文,但它也增加了大量的空白;这些字段被填充以使每个字段根据其数据类型尽可能大,从而给我带来大量填充和浪费空间的巨大文件。
我可以通过在我的sqlcmd标记中添加-W
来解决此问题,但这会让我错误地说-W
和-y
不兼容。
以前有人有这个问题吗?关于如何解决它的想法?
答案 0 :(得分:0)
从this thread开始,建议使用-s
指定列分隔符可以修剪数据,就像未指定数据固定宽度一样。
如果这不起作用,您是否在RTRIM(LTRIM(ColumnName))
查询中尝试了SELECT
?
答案 1 :(得分:-1)
我在使用SQLCMD创建CSV文件时遇到了这个问题,并通过欺骗SQLCMD解决了这个问题。我没有返回多个字段而是让SQLCMD将逗号作为分隔符,而只是连接所有字段,将逗号自己放入其中。我知道这是一个丑陋的解决方法,但这解决了我的问题。希望它可以帮助别人。