我有一个包含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
尝试了不同的方法,但没有起作用。感谢您的帮助。
嵌套在您创建的bcp命令中的精心制作的SQL命令在这里有一个错误:
FOR XML PATH('')
您似乎已经很熟悉使用“双单引号”在字符串中获取单引号的需要,但是您只是错过了执行此操作的位置。您的代码应为:
FOR XML PATH('''')
注意:您应该避免使用xp_cmdshell。它带来了严重的安全风险。 xp_cmdshell应该被禁用。