gpt4 book ai didi

sqlcmd - 如何在没有空格的情况下绕过列长度限制?

转载 作者:行者123 更新时间:2023-12-02 11:58:14 27 4
gpt4 key购买 nike

我正在尝试在运行 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,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”参数解决了这个问题。它仍然留下了一堆空白,但看起来它只到达了每个字段中最长的数据的末尾。

然后我通过一个程序运行输出,该程序删除了重复空格并解决了所有问题。

关于sqlcmd - 如何在没有空格的情况下绕过列长度限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5916896/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com