Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Экспорт большого объема данных в xml  [new]
Сергей Артемьев
Member

Откуда:
Сообщений: 11
Добрый день,

При попытке экспорта данных в xml-файл генерируется ошибка "String or binary data would be truncated".
Насколько я понимаю, причина в том, что экспортируется слишком большой объем данных, т.к. пробовал экспортировать из разных таблиц и различное количество строк (до определенного момента все формируется отлично, а потом возникает ошибка).

Подскажите, как с этим можно бороться.
17 мар 14, 09:47    [15736087]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт большого объема данных в xml  [new]
dvim
Member

Откуда: Санкт Петербург
Сообщений: 680
Сергей Артемьев,
А чем и как вы экспортировали ?.
17 мар 14, 10:56    [15736454]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт большого объема данных в xml  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Сергей Артемьев
При попытке экспорта данных в xml-файл генерируется ошибка "String or binary data would be truncated".
Насколько я понимаю, причина в том, что экспортируется слишком большой объем данных, т.к. пробовал экспортировать из разных таблиц и различное количество строк (до определенного момента все формируется отлично, а потом возникает ошибка).
Это ошибка возникает, когда в поле пытаются запихнуть строку большей длинны, чем размер поля.

Так что от размера XML это может зависеть, только если вы весь XML кладёте в переменную.
Если это не так, то просто в вашем XML попадается слишком длинная строка.
17 мар 14, 11:49    [15736887]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт большого объема данных в xml  [new]
Сергей Артемьев
Member

Откуда:
Сообщений: 11
alexeyvg,

А каким образом я могу модифицировать следующий код, чтобы подобной ошибки не возникало:
USE ASG

SELECT CONVERT( XML, REPLACE( N'<base>@ITEMS</base> ',N'@ITEMS', (
SELECT [dbo].[table1].[field1] AS [tag1],
[dbo].[table1].[field2] AS [tag2],
[dbo].[table1].[field3] AS [tag3]
FROM [dbo].[table1]
FOR XML PATH('mainrecordtag'), ROOT('table1')) + (

SELECT [dbo].[table2].[field1] AS [tag1],
[dbo].[table2].[field2] AS [tag2]
FROM [dbo].[table2]
FOR XML PATH('mainrecordtag'), ROOT('table2'))
))
Фактически, требуется организовать xml-файл со структурой:
<base>

<table1>
<>...<>
</table1>

<table2>
<>...<>
</table2>

<table3>
<>...<>
</table3>

...
</base>
17 мар 14, 12:18    [15737179]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт большого объема данных в xml  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Сергей Артемьев
А каким образом я могу модифицировать следующий код, чтобы подобной ошибки не возникало
Можно попробовать написать
SELECT CONVERT( XML, REPLACE( CONVERT(nvarchar(max), N'<base>@ITEMS</base> '),N'@ITEMS', CONVERT(nvarchar(max), ( ...

Но вообще странное использование функции REPLACE, и вообще странная конструкция.

Щас знатоки FOR XML придут, всё расскажут :-)
17 мар 14, 12:34    [15737349]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт большого объема данных в xml  [new]
KRS544
Member

Откуда:
Сообщений: 497
select
(SELECT *
FROM table1
FOR XML PATH('mainrecordtag'), ROOT('table1'),type),
(SELECT *
FROM table1
FOR XML PATH('mainrecordtag'), ROOT('table2'),type)
FOR XML PATH('BASE')
17 мар 14, 12:59    [15737586]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт большого объема данных в xml  [new]
Сергей Артемьев
Member

Откуда:
Сообщений: 11
KRS544,

Спасибо.
17 мар 14, 13:29    [15737870]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить