2017-04-19 44 views
3

我的目標是從現有的表中提取數據並進行一些基本的轉換(例如,派生列,合併連接)。之後,我想將數據存儲到一個變量中。然後,我將使用腳本任務用C#編寫發送電子郵件程序,並調用變量將這些數據加載到我的電子郵件正文內容中。但我很困惑,在幾步轉換任務後,我可以在哪裏存儲這些臨時數據。任何幫助,我很讚賞它。SSIS如何將數據流數據存儲在臨時表中,然後將其附加到電子郵件中?

1.My整個控制流程

enter image description here

2.My很少改造任務的數據流。我想知道如何在Sort4之後存儲數據,然後我可以將它們存儲到變量中。

enter image description here

+0

這是海報孩子,爲什麼你應該做的東西在查詢,而不是在SSIS.You真的可以通過編寫SQL使用郵箱發送電子郵件一個存儲過程簡化了這一點。 –

回答

1

謝謝你的回覆 我也找到了解決方案。 我使用記錄集目的地這個數據目的地可以幫助我存儲我的臨時數據。此目標可以在數據流外部模式下調用。 您還需要創建一個變量來存儲您的數據。

enter image description here enter image description here

+0

如果這是您必須接受的解決方案。即使它是你自己的答案 – Yahfoufi

+0

@Yahfoufi我不明白你的意思。 ??? –

+0

你已經發布瞭解決方案(這個答案)並接受了另一個答案(觀察者解決方案),即使它是你的答案,你也應該接受這個答案,因爲它是解決你問題的答案 – Yahfoufi

1

可以存儲DataTableList這裏面的行使用腳本組件。

添加類型Object的SSIS變量(例如:User::DataList

在數據流任務,添加腳本組件作爲Destination。將所有列標記爲輸入。並使用下面的代碼。 (Vb.net)

列表版本

Public Class ScriptMain 
    Inherits UserComponent 

    Public Overrides Sub PostExecute() 
     MyBase.PostExecute() 

     Variables.DataList = lstObject 

    End Sub 

    Dim lstObject As Collections.Generic.List(Of DataClass) 

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 

     lstObject.Add(New DataClass With { 
        .CompanyName = Row.CompanyName, 
        .CountryName = Row.Country, 
        .EmployeeName = Row.EmployeeName, 
        .Freight = CDbl(Row.Freight)}) 


    End Sub 


End Class 

Public Class DataClass 

    Public Property CompanyName As String 

    Public Property CountryName As String 

    Public Property EmployeeName As String 

    Public Property Freight As Double? 


End Class 

的DataTable版

Public Class ScriptMain 
    Inherits UserComponent 

    Dim dtData As New System.Data.DataTable("dtData") 

    Public Overrides Sub PostExecute() 
     MyBase.PostExecute() 

     Variables.DataList = dtData 

    End Sub 


    Public Overrides Sub PreExecute() 
     MyBase.PreExecute() 

     dtData.Columns.Add("CompanyName") 
     dtData.Columns.Add("CountryName") 
     dtData.Columns.Add("EmployeeName") 
     dtData.Columns.Add("Freight") 

    End Sub 

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 


     Dim drRow As DataRow = dtData.NewRow 

     drRow("CompanyName") = Row.CompanyName 

     drRow("CountryName") = Row.Country 

     drRow("EmployeeName") = Row.EmployeeName 

     drRow("Freight") = Row.Freight 

     dtData.Rows.Add(drRow) 


    End Sub 


End Class 
1

。結果存儲在一個FlatFileDestination(平面文件名可以用日期時間名稱來配置+日期時間),並將此文件用作發送郵件任務中的附件。附件路徑可以配置。 使用文件系統任務發送電子郵件後,發送的文件也可以從本地存儲中刪除。

enter image description here

您還可以使用第三方工具(行貨)CozyRoc。它包括諸如「發送郵件任務+」之類的工具,它支持HTML格式的電子郵件正文。使用腳本任務,您可以創建一個動態表(html表格)腳本,該腳本可以存儲在一個變量中,並可以顯示在電子郵件中。

相關問題