Экспорт данных xml с помощью команды BCP в SQL Server

Я пытаюсь экспортировать данные в формате xml, но проблема в том, что я могу создать файл xml, но данные не записываются в файл, следующий мой код, который я пытаюсь.

DECLARE @cmd  VARCHAR(2000);

SET @cmd = 'bcp.exe "select * from emp FOR XML AUTO" queryout E:\rahul_1.xml -x -T';

EXEC xp_cmdshell  @cmd ;

И ниже приведено выходное сообщение, которое я получаю после выполнения вышеуказанного кода.

NULL
Enter the file storage type of field XML_F52E2B61-18A1-11d1-B105-00805F49916B [ntext]: 

Может ли кто-нибудь предложить мне это


person Shashikant    schedule 26.11.2014    source источник
comment
Кстати, документация прямо говорит The -x does not work when importing or exporting data.   -  person Bridge    schedule 19.01.2016


Ответы (3)


Дэн, ты отвечаешь, работает, кроме одной последней вещи. BCP требуется дополнительная информация об исходном запросе. Лучшая идея - полностью определить источник данных.

SET @cmd = 'bcp.exe "select * from [Database].[Schema].[Table] FOR XML AUTO" 
             queryout E:\rahul_1.xml -c -T';
person Brad D    schedule 26.11.2014

Вместо параметра -x (генерировать файл формата xml) укажите -c (символьный файл):

SET @cmd = 'bcp.exe "select * from emp FOR XML AUTO" queryout E:\rahul_1.xml -c -T';
person Dan Guzman    schedule 26.11.2014
comment
Спасибо за повтор. Я попробовал это, но это также не работает, следующее сообщение, которое я получил после выполнения команды NULL. Запуск копирования... NULL 0 строк скопировано. Размер сетевого пакета (байт): 4096 Время часов (мс) Всего: 1 NULL - person Shashikant; 26.11.2014
comment
Эта команда отлично сработала для очень похожей операции по экспорту выходных данных расширенного события во внешний файл. +1 - person RThomas; 03.02.2020

попробуйте использовать ключ -w для экспорта файла XML в правильном формате

SET @cmd = 'bcp.exe "выберите * из [База данных].[Схема].[Таблица] FOR XML AUTO" queryout E:\filename.xml -S MyServer\MyInstance -c -T -w';

person Amarjeet Singh    schedule 19.01.2016