2010-04-29 27 views
0

在SSMS中,我得到了我寫的xml路徑查詢,它很漂亮。FOR XML PATH查詢結果到SSIS文件

我把它放在控制流中的「執行SQL任務」中,將結果集設置爲XML。

現在如何將結果導入到一個實際的xml文件中,我可以將它轉向FTP並轉發給第三方?

這應該是如此簡單!我會把XML放入一個變量中,但我們正在尋找一個巨大的文件,可能是100MB +

我是否需要使用腳本任務? (如果還有其他選擇,我想避免這種情況。)

回答

0

您需要使用data flow task而不是執行SQL任務來加入源(SQL調用)和目標(平面文件連接) 。

+0

試過,首先,平面文件連接沒有XML的數據類型。 我試着通過數據轉換來運行它,並將該文件視爲DT_IMAGE ...我試圖將其更改爲DT_TEXT,DT_STR太小。 兩者都將不可識別的字符放在我的平面文件中。 你會使用什麼數據類型?我不認爲平面文件連接是用來處理XML輸出的。 – WhimSQL 2010-04-29 18:36:08

+0

xml實際上是nvarchar(max):你應該能夠指定這個 – gbn 2010-04-29 18:57:58

0

我在搜索完全相同的問題(即從存儲過程中提取大量XML數據並使用SSIS寫出)。

我正在使用OLEDB,它工作但疼痛緩慢。當切換到SSIS中的ADO.NET適配器時,從SQL Server中檢索XML的速度提高了50倍。如果你有興趣,我會描述細節。

0

我不太理解與使用腳本任務,因爲你的整個腳本(VB.net)的猶豫看起來是這樣的:

Imports System 
Imports System.Data 
Imports System.Math 
Imports Microsoft.SqlServer.Dts.Runtime 
Imports System.Data.SqlClient 
Imports System.Text 
Imports System.IO 


Public Sub Main() 
Using Out As StreamWriter = New StreamWriter(<--XML FILE LOCATION-->) 
Out.Write(Dts.Variables("User::Xml").Value.ToString()) 
Out.Close() 
End Using 
Dts.TaskResult = Dts.Results.Success 
End Sub 

這幾乎是所有這隻要花費爲您的XML是格式良好的。