BCP выбрать с функцией STUFF в. json формат - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть таблица с 6 столбцами, и мне нужно преобразовать этот вывод в формат. json и отправить вывод в формат. json в папку.

Я тестирую только с одним столбцом. Когда я выполняю оператор выбора, я получаю правильный вывод;

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

Пробовал разные вещи, но не работал. Ценю вашу помощь.

1 Ответ

0 голосов
/ 16 апреля 2020

Ваша созданная команда SQL, расположенная внутри созданной команды bcp, содержит ошибку здесь:

FOR XML PATH ('')

Вы, похоже, уже знакомы с нужно использовать "двойную одинарную кавычку", чтобы получить одинарную кавычку в строке, но вы просто пропустили место, чтобы сделать это в. Ваш код должен быть:

FOR XML PATH ('' '')

ПРИМЕЧАНИЕ: вы должны избегать использования xp_cmdshell. Это создает серьезные угрозы безопасности. xp_cmdshell должен быть отключен.

...