2012-01-24 3 views
3

Мне нужно экспортировать таблицу из SQL Server 2008 из базы данных, а затем восстановить эту таблицу в локальной базе данных. Проблема заключается в том, что один из столбцов содержит данные XML. Что было бы самым эффективным способом сделать это?Экспортировать таблицу, содержащую столбец данных XML в SQL Server 2008

+0

Как бы вы это сделали, если у вас не было столбца XML? –

+0

обычно, я бы экспортировал в плоский файл. Но это вызывает ошибку в столбце XML – user1111955

ответ

3

Вы также можете попробовать мастер «Экспорт данных». Это должно хорошо работать с учетом вашего сценария.

0

Вы можете использовать XML вместо плоского файла.

Структура выборки и данные:

create table XMLTable 
(
    ID int, 
    XMLData xml 
) 

insert into XMLTable values 
(1, '<root>item1</root>'), 
(2, '<root>item2</root>') 

Запрос данных с помощью for xml auto:

select * 
from XMLTable 
for xml auto, elements 

Результат:

<XMLTable> 
    <ID>1</ID> 
    <XMLData> 
    <root>item1</root> 
    </XMLData> 
</XMLTable> 
<XMLTable> 
    <ID>2</ID> 
    <XMLData> 
    <root>item2</root> 
    </XMLData> 
</XMLTable> 

Загрузите XML-переменной типа данных XML, в мишени DB и используйте XQuery для вставки данных. Используйте .value() для регулярных столбцов и .query() для столбца XML.

declare @XML xml 

set @XML = 
'<XMLTable> 
    <ID>1</ID> 
    <XMLData> 
    <root>item1</root> 
    </XMLData> 
</XMLTable> 
<XMLTable> 
    <ID>2</ID> 
    <XMLData> 
    <root>item2</root> 
    </XMLData> 
</XMLTable>' 

insert into XMLTable(ID, XMLData) 
select T.N.value('ID[1]', 'int'), 
     T.N.query('XMLData/*') 
from @XML.nodes('/XMLTable') as T(N) 
Смежные вопросы