2016-06-29 2 views
2

Мне нужно экспортировать XML-данные, хранящиеся в ячейке таблицы, в файл xml.Экспорт данных XML, хранящихся в столбцах таблицы, в файлы xml

Я попытался запустить ниже запрос

USE [AdventureWorks2012] 
GO 

-- Save XML records to a file: 
DECLARE @fileName VARCHAR(50) 

DECLARE @sqlStr VARCHAR(1000) 
DECLARE @sqlCmd VARCHAR(1000) 

SET @fileName = 'D:\SQL_Queries\PersonAdditionalContactInfo.xml' 
SET @sqlStr = 'select TOP 1 AdditionalContactInfo from AdventureWorks2012.Person.Person where AdditionalContactInfo IS NOT NULL' 

SET @sqlCmd = 'bcp "' + @sqlStr + '" queryout ' + @fileName + ' -w -T' 

EXEC xp_cmdshell @sqlCmd 

как было предложено на https://sqlwithmanoj.com/2015/04/13/export-xml-column-data-to-a-file-xml/

После выполнения этого запроса я получаю ниже выхода к сетке

использования: BCP {dbtable | query} {in | | запрос | format} datafile
[-m maxerrors] [-f formatfile] [-e errfile] [-F firstrow] [-L lastrow] [-b batchsize] [-n родной тип] [-c тип персонажа] [ -w широкий символ type] [-N сохранить нетекстовый родной] [-V формат файла версии] [-q цитируется идентификатор] [-кодировщик кодовой страницы] [-t полевой терминатор] [-r строка терминатор] [-i inputfile] [-o outfile]
[-a packetsize] [-S имя сервера] [-U имя пользователя]
[-P пароль] [-T надежное соединение] [-v версия] [-R региональный enable] [-k сохранить значения null] [-E сохранить значения идентификатора] [-h "подсказки загрузки"] [-x генерировать файл формата XML] NULL

Но нет ни одного файла создается на месте 'D: \ SQL_Queries \'

+0

Возможно, вы ищете неправильный 'D: \', SQL Server работает в своем собственном контексте. Если это не ваша локальная машина, ваш 'D: \' может быть где-то еще ... – Shnugo

+0

См. Веб-страницу: https://msdn.microsoft.com/en-us/library/ms162802.aspx. – jdweng

+0

Привет, это все еще открыто? Вам нужна дополнительная помощь? Если эта проблема будет решена, было бы неплохо поставить галочку на приемочную проверку ниже счетчика голосов. Это будет 1) отметить эту проблему как решение 2) облегчить для последователей, чтобы найти лучшее решение 3) платить очки для ответчика и 4) платить очки вам. Поскольку вы пересекли границу с 15 пунктами, вы - дополнительно - попросили проголосовать за взносы. Это SO-способ сказать спасибо. Счастливое кодирование! – Shnugo

ответ

0

Это работает для меня (путь_к_файла в контексте вашего SQL Server !!!):

CREATE TABLE dbo.tmpTest(AdditionalContactInfo XML); 
INSERT INTO dbo.tmpTest(AdditionalContactInfo) SELECT '<root><a>SomeTest</a></root>'; 

DECLARE @fileName VARCHAR(50)='"C:\ExisitingDirectory\PersonAdditionalContactInfo.xml"'; 
--attention: Change the table's name! 
DECLARE @sqlStr VARCHAR(1000)='select TOP 1 AdditionalContactInfo from master.dbo.tmpTest where AdditionalContactInfo IS NOT NULL'; 
--attention: Change the server's name 
DECLARE @sqlCmd VARCHAR(1000) = 'bcp "' + @sqlStr + '" queryout ' + @fileName + ' -S TheServer -c -w -T'; 

EXEC xp_cmdshell @sqlCmd; 
GO 

DROP TABLE dbo.tmpTest; 
Смежные вопросы