2010-07-30 21 views
2

我正在将一个非常大的数据集生成到XML文件中以发送到外部Web服务。该文件大约20兆字节,并且在文件中唯一行的字符18995504附近的某处存在验证错误。如何使用空白将SQL Server XML数据类型转换为nvarchar

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本身或使用最少的新工具来完成此操作?

回答

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(); 
} 
0

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

+0

不幸的是,Visual Studio在尝试打开一个长度为20 megs的单行文件时会挂起。我怀疑这不是他们计划或测试的东西。 – 2010-07-30 08:59:55

+0

呵呵,那么我会用编程方式去:-) – 2010-07-30 09:47:06

相关问题