簡體   English   中英

是否在不使用BCP的情況下將T-SQL查詢的結果移動到文件?

[英]Moving results of T-SQL query to a file without using BCP?

我要做的是將一些查詢結果輸出到文件中。 基本上,當我查詢自己感興趣的表時,我的結果如下所示:

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

字段HTML_CONTENT的類型為ntext ,每個記錄的值約為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

您添加了“單個文件”的要求之前,此答案將一直有效。

您可以從命令行運行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

  • 創建一個包
  • 在包級別創建一個名為Objects類型的RecordsToOutput變量
  • 使用EXECUTE SQL任務並將數據集重新返回到RecordsToOutput
  • 使用For-Each循環遍歷RecordsToOutput數據集
    • 在循環中,為數據集中的每一列創建一個變量(給它起相同的名稱)
    • 添加數據流任務
    • 使用OleDB源並使用SQL語句創建一行(使用您已經擁有的數據)
    • 使用平面文件目標寫出該行。
    • 在平面文件連接上使用表達式更改循環中每一行的目標文件名。

您可以使用SSIS讀取表數據並將表行的內容作為文件輸出。 SSIS包的“數據流任務”中可用的導出列轉換可以幫助您完成此任務。

這是一個示例, 導出列轉換

有關導出列轉換的MSDN文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM