我试图使用SQLCMD运行SQL Server 2005在Windows计算机上编写一个查询到CSV文件。我们通常使用的命令行选项有:SQLCMD - 如何绕过列长度限制没有空的空间?
-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,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
什么数据类型是截断的数据吗? – gbn 2011-05-08 18:53:01
我们使用stuff函数和FOR XML PATH命令的组合将多个nvarchar(500)字段连接到一个字段中。我不太确定他们是如何工作的(我们通过谷歌找到了解决方案),但我们最终将他们全部放在同一个领域,我们通过选择语句将他们拉出来。我将编辑答案并包含代码。 – 2011-05-11 15:50:57