如何使用空白将SQL Server XML数据类型转换为nvarchar
问题描述:
我正在将一个非常大的数据集生成到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本身或使用最少的新工具来完成此操作?
答
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();
}
答
我想你必须自己循环浏览xml并添加CHAR(13)+ CHAR(10) 如果你只需要一个或两个文件(换句话说,你不需要以编程方式执行此操作),你可以使用Visual Studio。粘贴XML并按下:CTRL + K,CTRL + D
不幸的是,Visual Studio在尝试打开一个长度为20 megs的单行文件时会挂起。我怀疑这不是他们计划或测试的东西。 – 2010-07-30 08:59:55
呵呵,那么我会用编程方式去:-) – 2010-07-30 09:47:06