gpt4 book ai didi

sql-server - 使用 TYPE(在 sql server 2008 中)命令将缓冲区大小限制为 255

转载 作者:可可西里 更新时间:2023-11-01 10:45:34 25 4
gpt4 key购买 nike

我正在使用 master.dbo.xp_cmdshell 以下列方式将 txt/csv 文件加载到 SQL 服务器:

CREATE TABLE #tempoutput
(
result_id [int] IDENTITY(1,1) NOT NULL,
result VARCHAR(MAX)
)


INSERT INTO #tempoutput(result)
EXEC @rcode = master.dbo.xp_cmdshell TYPE c:\test.csv

问题是,虽然结果列被定义为 VARCHAR(MAX),但当我尝试使用标题时:

SELECT  top 1 @result=result
FROM #Tempoutput

我只能获取 255 个字符,有什么原因吗?以及如何能够获取所有行直到 CRLF

谢谢!

最佳答案

结果确实包含所有数据,只是在您的 #tempoutput 表中分成多行 255 个字符。 (删除 TOP 1 以查看所有行)

INSERT INTO #tempoutput(result)
EXEC @rcode = master.dbo.xp_cmdshell "TYPE c:\ReallyBig.csv"
SELECT * FROM #tempoutput; -- You'll see the extra rows

如果您需要将所有行重新组合成一个 VARCHAR(MAX),您需要使用您最喜欢的 GROUP_CONCAT破解。由于您已经在使用 xp_cmdshell,您可能可以不受限制地访问您的服务器,所以为什么不安装 CLR aggregate function like thisexample usage做到这一点 - 在我看来,这比 FOR XML ... STUFF hacks 更具可读性。

关于sql-server - 使用 TYPE(在 sql server 2008 中)命令将缓冲区大小限制为 255,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27599101/

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