2011-08-04 13 views
0

我想要做的是將一些查詢結果輸出到文件。基本上,當我查詢我感興趣的表,我的結果是這樣的:將T-SQL查詢的結果移到不使用BCP的文件中?

HTML_ID HTML_CONTENT 
1   <html>... 
2   <html>... 
3   <html>... 
4   <html>... 
5   <html>... 
6   <html>... 
7   <html>... 

領域HTML_CONTENTntext類型的每條記錄的值約爲500 +字符(包含HTML內容)。

我可以創建一個遊標將每條記錄的內容移動到臨時表或其他任何地方。 但我的問題是這樣的:而不是臨時表,我將如何移動這個沒有使用BCP

BCP不是一個選項,因爲我們的sysadmin已經阻止訪問sys.xp_cmdshell

注:我想store each record's HTML content to individual files

我的SQL的版本是:Microsoft SQL Server 2008 (SP1) - 10.0.2531.0

回答

0

您可以使用SSIS的讀表數據和輸出表行作爲文件的內容。導出數據流任務中可用的SSIS包任務列轉換可能會幫助您做到這一點。

下面是一個例子,The Export Column Transformation

MSDN documentation約出口列轉換。

0

這個答案會工作,直到您添加的需求爲單個文件

您可以從命令行運行SQL並將輸出轉儲到文件中。以下實用程序可用於此目的。

下面是一個例子與SQLCMD與聯查詢

sqlcmd -S ServerName -E -Q "Select GetDate() CurrentDateAndTime" > output.txt

您可以將查詢保存到一個文件(QueryString.sql)和用-i代替

sqlcmd -S ServerName -E -i QueryString.sql> output.txt

編輯

使用SSIS

  • 創建一個包
  • 在封裝級
  • 使用創建一個名爲RecordsToOutput Object類型的變量執行SQL任務,並得到數據集返回到RecordsToOutput
  • 使用for-each循環都要經過RecordsToOutput數據集
    • 在循環中,在數據集中創建的每個列有一個變量(給它相同的名稱)
    • 添加一個數據流任務
    • 使用OleDB源並使用SQL語句創建一行(使用已有的數據)
    • 使用平面文件目標寫出行。
    • 在平面文件連接上使用表達式來更改循環中每一行的目標文件的名稱。
相關問題