SSIS包,只需要派生列

时间:2015-05-14 15:00:45

标签: ssis

我有一个SSIS包,我有一个For Each循环,它将多个txt文件导入SQL Server表。运行正常。

我想要完成的是将不同的文件名和日期存储到单独的表中。我为此创建了一个单独的For Each循环,然后在文件系统任务完成之后归档txt文件。

我遇到的问题是,如果有警告,我会调用一个事件处理程序来调用SQL任务和发送电子邮件任务(我希望只有在程序包导入的目录中没有文件时才会发出警告)。

但是,我发现了一个警告,即数据流任务中的列未被使用,如果不需要则应该删除。但是数据流任务至少需要一个字段才能放置派生列任务

派生列Field1:从ForEachLoop容器中提取@User:CurrentFile。 Field2拉出当前日期。

有没有办法在没有警告的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

听起来你的事情过于复杂。

您有一个ForEach循环,因此您将值分配给某个变量以包含文件名@User :: CurrentFile。您可以通过调用GETDATE()或引用系统范围变量StartTime @[System::StarTime]

来获取加载日期

最直接的选择是从数据流任务中添加一个连接到OnSuccess Precedent Constraint的执行SQL任务。然后,执行SQL任务将具有类似INSERT INTO dbo.MyLog(FileName, InsertDate) SELECT ?, ?的语句,假定OLE DB连接管理器,然后映射两个变量。

简单,干净,没有针对数据流中未使用的列发出警告。

enter image description here

我认为你有这样的东西,基于

  

我为此

创建了一个单独的For Each Loop

enter image description here