sqlcmd – 如何在没有空格的情况下绕过列长度限制?
发布时间:2020-12-12 07:05:24 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试在运行SQL Server 2005的 Windows机器上使用sqlcmd将查询写入csv文件.我们通常使用的命令行选项是: -l 60 -t 300 -r 1 -b -W -h -1 但是,列被截断为256个字节.为了避免这种情况,我尝试使用此命令行选项代替-W: -y 8000 这捕获了整个字段,但是这个
我正在尝试在运行SQL Server 2005的
Windows机器上使用sqlcmd将查询写入csv文件.我们通常使用的命令行选项是:
-l 60 -t 300 -r 1 -b -W -h -1 但是,列被截断为256个字节.为了避免这种情况,我尝试使用此命令行选项代替-W: -y 8000 这捕获了整个字段,但是这个方法的问题在于,由于所有额外的空间,文件从1mb增加到大约200mb(我意识到8000可能是矫枉过正,但它可能必须至少4000并且我目前只处理一小部分数据). -W选项通常会消除所有这些额外空间,但当我尝试将它们一起使用时,它告诉我它们是互斥的. 有没有办法让sqlcmd在这个限制附近,或者是否有人知道另一个程序(如bcp或osql)是否会使这更容易? 编辑: SELECT ALIASES.AliasList as complianceAliases, … LEFT OUTER JOIN (Select M1.ID,M1.LIST_ID,stuff((SELECT '{|}' + isnull(Content2,'')+' '+isnull(Content3,'')+' '+isnull(Content4,'')+' '+isnull(Content5,'')+' '+isnull(Content6,'')+' '+isnull(Content7,'') FROM fs_HOST3_TEST_web.ISI_APP_COMP_MULTI M2 with (nolock) WHERE M1.LIST_ID = M2.LIST_ID and M1.ID = M2.ID and M1.TYPE = M2.TYPE FOR XML PATH('') ),1,'') as AliasList FROM fs_HOST3_TEST_web.ISI_APP_COMP_MULTI M1 with (nolock) WHERE M1.LIST_ID = 2001 AND M1.TYPE = 'Aliases' GROUP BY m1.list_id,m1.ID,m1.Type) as ALIASES ON ALIASES.LIST_ID = PAIR.COMP_LIST_ID AND ALIASES.ID = PAIR.COMP_ID 解决方法我最后通过使用“-y0”参数来解决这个问题.它仍然留下了一堆空白,但看起来它只是到了每个字段中最长的数据的末尾.然后,我通过一个程序运行输出,该程序删除了重复空格并解决了所有问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |