使用源平面文件从目标表ssis中删除行

时间:2015-12-16 14:41:18

标签: sql-server ssis

我有一个包含年份特定记录的表格,我们根据特定年份的标准更改值。我每周都会对信息进行更新,有时会添加或删除产品的新产品或对产品的改变。我们简化了流程,现在我们手动删除当前年份的记录,然后完整地加载年份的源数据。我正在尝试自动化这个过程。我有一个执行SQL任务,删除当前年份的记录,但我已经硬编码了该值。我想要做的是根据我导入的平面文件中的字段使其成为参数。所以我的问题是,我可以创建一个基于平面文件的参数并在数据流任务之前使用它吗?或者我是否必须执行数据流任务来创建参数,然后执行SQL任务,然后执行另一个数据流任务?

2 个答案:

答案 0 :(得分:0)

您可以使用脚本任务预读平面文件并填充包变量。

答案 1 :(得分:0)

enter image description here

然后在脚本中

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper

Public Class ScriptMain
Inherits UserComponent
Dim intfield As Integer

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    '
    ' Add your code here
    '
    intfield = Row.Myfield
End Sub
Public Overrides Sub PostExecute()
    Me.Variables.MyVariable = intfield
End Sub
End Class

为了完整性,您可以显示变量(在测试时)。
注意:测试完成后,您可以禁用此脚本任务!
在控制流中添加一个脚本组件(见下图)

enter image description here

然后在脚本中添加此项以显示变量内容。

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime

Public Class ScriptMain
Public Sub Main()
    MsgBox(Dts.Variables("MyVariable").Value.ToString)
    Dts.TaskResult = Dts.Results.Success
End Sub
End Class