我正在使用master.dbo.xp_cmdshell将txt / csv文件加载到sql Server,方法如下:
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
谢谢!
使用for循环读取文本文件replace多行batch file
Windows批处理循环将空string拖放到最后
CMD / Powershell:不使用cURL的命令。 Cygwin的作品
窗口%PATH%variables – 如何拆分';' 在CMD shell中再次
为循环batch file
在string上应用expression式
如何使用同一行代码为命令行和batch file转义%%?
使用Windows批处理脚本在FOR循环中计数
batch file不能压缩“终止作业”
结果确实包含了所有的数据,它只是在#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 hack。 既然你已经在使用xp_cmdshell ,那么你可能无限制地访问你的服务器,那么为什么不安装一个像这样的CLR聚合函数来做这个事情呢 – IMO这个比FOR XML ... STUFF更可读FOR XML ... STUFF hacks 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。