2011-08-04 61 views
0

我有一個Oracle查詢,我想每天將查詢結果導出到excel文件。我已經研究過SSRS和SSIS,我不確定哪個更適合使用。我應該使用SSRS還是SSIS?

該查詢是一個正常的選擇,返回10-20個字段。這是非常直接與幾個加入和where子句。它選擇DISTINCT來擺脫重複的行。

這是從查詢到excel文件的直接映射。

SSIS是否比SSRS具有性能優勢?

我傾向於SSRS,因爲它設置起來非常簡單,而且通過SSRS Web UI可以輕鬆運行不同日期的提取/報告。

SSIS似乎會設置更復雜,但仍然很簡單。但是,似乎我將不得不處理如何重命名提取而不使用主Excel的「模板」,所以涉及更多的步驟。還有問題獲取參數與Oracle查詢。

回答

3

即使我是SSIS的忠實粉絲,我也會在這種情況下使用SSRS。

  1. 您的要求是您只需要Excel文件中的數據。雖然SSIS和SSRS都可以完成這項任務。 SSRS在您試圖實現的方面略有優勢。

  2. 您可以在SSRS報告中格式化Excel文件,但是您想要。

  3. 與SSIS包相似,SSRS包易於配置,SSRS也具有更簡單的開發流程。然而,你可以設計和填充你想要的。

  4. SSIS需要一個SQL作業來安排它以便運行包然後發送給您Excel文件或將它保存到某個位置。但是,在SSRS中,您可以簡單地創建訂閱並將Excel文件導出到特定文件夾或通過電子郵件發送給您。

  5. 如果您想更改文件導出格式,SSRS已經爲您做了。

我能想到的一些觀點。

3

這不是一個報告,所以不要使用Reporting Services。

爲此,SSIS包是一個包含兩個組件的單個數據流任務:用於Oracle查詢的「OLE DB源」和「Excel目標」。在兩個組件之間繪製一個連接,配置它們,按F5,就完成了。


幾乎SSIS中的任何屬性都可以設置爲表達式的值。這包括Excel連接管理器的「ExcelFilePath」屬性。只需將其設置爲將日期附加到文件路徑的表達式,並且只要您每天只運行該包,就會設置該表達式。

如果您需要每天運行一次以上,那麼只需在數據流任務前加上文件系統任務即可刪除該文件的任何先前版本。


剛剛嘗試過這個快速自己,發現一個小問題。我使用的數據源包括VARCHAR列。 Excel Destination需要Unicode,所以我必須在源和目標之間放置一個數據轉換組件。

+0

我不需要處理excel模板嗎?當我剛剛提到你提到的基礎知識時,excel文件最終會包含來自之前運行的數據以及當前運行的數據。我們也想每天運行這個,所以我們需要用日期後綴保存excel文件。我不是SSIS專家,但到目前爲止,我看不到一個簡單的方法來做到這一點。我當前的解決方案涉及在運行之前複製模板,並在運行後使用腳本對象中設置的多個變量重命名輸出。這絕對不像SSRS那樣容易。 – dtc

相關問題