[使用STUFF函数将bcp选择为.json格式

问题描述 投票:-1回答:1

我有一个包含6列的表,需要将该输出转换为.json格式并将输出以.json格式发送到一个文件夹。

我仅用一列进行测试。当我执行select语句时,我得到正确的输出;

select'[' +STUFF((select ',{'+ '"LocationID":"' +LocationID++'"}'FROM ##TABLE FOR XML PATH(''),TYPE).value('.','varchar(MAX)'),1,1,'') +']';

但是当我将此选择添加到bcp时,我得到的错误复制方向必须是'in','out'或'format']

DECLARE @cmd varchar(8000)
SET @cmd = 'bcp "select ''['' +STUFF((select '',{''+ ''"LocationID":"'' +LocationID+''"}''FROM ##TABLE FOR XML PATH(''),TYPE).value(''.'',''varchar(MAX)''),1,1,'') +'']''" queryout T:\filename.json -c -t, -T'
EXEC master..xp_cmdshell @cmd

尝试了不同的方法,但没有起作用。感谢您的帮助。

json sql-server tsql bcp
1个回答
0
投票

嵌套在您创建的bcp命令中的精心制作的SQL命令在这里有一个错误:

FOR XML PATH('')

您似乎已经很熟悉使用“双单引号”在字符串中获取单引号的需要,但是您只是错过了执行此操作的位置。您的代码应为:

FOR XML PATH('''')

注意:您应该避免使用xp_cmdshell。它带来了严重的安全风险。 xp_cmdshell应该被禁用。

© www.soinside.com 2019 - 2024. All rights reserved.