如何使用空格将SQL Server XML数据类型转换为nvarchar

时间:2010-07-30 08:51:55

标签: sql-server-2005

我正在生成一个非常大的数据集到XML文件中以发送到外部Web服务。此文件大约为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 个答案:

答案 0 :(得分:1)

这个小小的C#片段能够快速有效地在SQL Server外部进行转换。也许可以通过SQL Server中的CLR程序集直接处理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();
}

答案 1 :(得分:0)

我猜你必须自己遍历xml并添加CHAR(13)+ CHAR(10) 如果您只需要一个或两个文件(换句话说,您不需要以编程方式执行此操作),则可以使用Visual Studio。粘贴XML并按:CTRL + K,CTRL + D