首页 文章

SSIS包,只需要派生列

提问于
浏览
0

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

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

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

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

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

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

1 回答

  • 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

相关问题