2010-07-30 45 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

相關問題