使用IF / THEN表达式导入SSIS(或T-SQL脚本)

时间:2014-03-05 18:03:12

标签: sql tsql ssis

我目前正在开展一个项目,我需要创建一个临时解决方案(大约6个月),直到我们的咨询小组完成另一个项目,并在后端系统上修改所需的代码修复。

这是我想要完成的。

我有一个文本文件被放入FTP站点。我想抓取Text文件,将其导入文件夹,然后运行SSIS进程来更正列。

我需要让SSIS进程查看标记为[jobkeyid]的列,如果[jobkeyid]是65000100或65000101,那么我想暂时捕获[userid],然后我想查看[managerid]列,如果找到临时捕获的[userid],那么我需要将它与[approverid]交换。

一旦完成,我将在FTP中替换此文件,以便单独的系统可以解析我们正在启动的在线培训系统中的权限批准表的数据。

这是txt文件的视图(放入Excel以便于理解)。

enter image description here

我想在SSIS中执行此操作,但如果有一个干净的T-SQL脚本我可以实现,这也很好,因为这只是一个临时解决方案。

1 个答案:

答案 0 :(得分:1)

好老的“临时解决方案” - 如果我每人都有一美元......

您可以使用上游数据流任务将managerid和approverid加载到查找缓存中。默认情况下,它将忽略重复项并为每个键使用第一行(managerid)。

然后在主数据流任务中,我将使用条件拆分来分离jobkeyid 65000100或65000101,然后添加Lookup(使用上面加载的缓存)来获取新的用户ID。然后我会添加一个派生列转换来覆盖用户ID。

然后,Union转换会将所有行重新拉回到将它们传送到输出文件之前。

对于FTP任务,我称之为WinSCP - 这比通用SSIS FTP任务更可靠,功能更多。