Как преобразовать тип данных SQL Server XML в nvarchar с пробелами - PullRequest
2 голосов
/ 30 июля 2010

Я генерирую очень большой набор данных в файл XML для отправки на внешний веб-сервис. Этот файл составляет около 20 мегабайт и имеет ошибку проверки где-то рядом с символом 18995504 единственной строки в файле.

DECLARE @Text nvarchar(MAX)

SET @Text = (SELECT xml FROM (...) multiLeveledQueryFromHell)
SET @Text = '<root xmlns="urn:examplenamespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:schemaname urn:schemaurl">' + @Text + '</root>'
EXECUTE WriteToFile(@Filename, @Text)

Преобразование из xml в nvarchar (MAX) оставляет мне строку типа <root ...><elements>...</elements></root>. Я хочу получить его в многострочном варианте с вкладками

<root ...>
  <elements>
    ...
  </elements>
</root>

Как мне сделать это с помощью SQL Server отдельно или с минимумом новых инструментов?

Ответы [ 2 ]

1 голос
/ 30 июля 2010

Этот небольшой фрагмент C # работал быстро и достаточно эффективно, чтобы выполнить преобразование вне SQL Server. Может быть, есть что-то, что можно сделать с помощью сборки CLR внутри SQL Server, непосредственно связанной с типом данных Xml.

static void Main(string[] args)
{
    XmlTextReader reader = new XmlTextReader(Console.In);
    XmlTextWriter writer = new XmlTextWriter(Console.Out);

    writer.Formatting = Formatting.Indented;

    XmlDocument document = new XmlDocument();
    document.Load(reader);
    document.WriteTo(writer);

    reader.Close();
    writer.Close();
}
0 голосов
/ 30 июля 2010

Полагаю, вы должны сами пройтись по xml и добавить CHAR (13) + CHAR (10) Если вам нужен только один или два файла (другими словами, вам не нужно делать это программно), вы можете использовать Visual Studio. Вставьте XML и нажмите: CTRL + K, CTRL + D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...