ssis - 平面文件源错误在SSIS中的输出连接

标签 ssis

我在SSIS中有一个平面文件源连接。我为错误输出创建了一个平面文件目标连接。我已经用红色箭头连接了它。问题是即使平面文件源中没有错误,也会创建错误输出文件。即使没有错误,“错误平面文件目标”也始终变为绿色。如何解决。提前致谢

最佳答案

可能您已经找到了解决方案。我希望这可以帮助寻求解决此问题的人。

SSIS中没有内置数据流任务设置可用于执行此操作。您可以在Data Flow任务中结合使用Row Count转换和Control Flow上的File System Task来实现此目的。

这是有关如何执行此操作的分步过程。在此示例中,我使用了一个名为Country_State.csv的csv文件,其中包含国家和地区作为源文件。

场景:

该示例包将读取该文件,然后将其写入名为Destination.txt的文本文件。在这种情况下,将创建错误文件Error.txt,但是如果没有错误,则稍后将其删除。在这里,我将文件存储在路径c:\temp\

分步流程:

  • 在连接管理器部分上,创建三个平面文件连接,即目标错误。请参阅屏幕快照# 1
  • Source连接应指向csv文件路径c:\temp\Country_State.csv。有关此文件的内容,请参见屏幕快照# 2
  • Destination连接应指向名为c:\temp\Destination.txt的文本文件。
  • Error连接应指向名为c:\temp\Error.txt的文本文件。
  • 创建名为ErrorCount的数据类型 Int32 的变量。
  • 在“控制流”选项卡上,放置Data Flow Task,然后放置File System Task
  • 将数据流任务连接到文件系统任务。
  • 右键单击数据流任务和文件系统任务之间的连接器。
  • 优先约束编辑器上,将评估操作更改为Expression并将值@ErrorCount == 0粘贴到表达式文本框中。
  • 您的控制流应如屏幕快照# 3 所示。
  • 在“数据流”选项卡上的数据流任务内,拖放平面文件源并将其配置为使用Source连接管理器。
  • 放置平面文件目标并将其配置为使用Destination连接管理器。
  • 将平面文件源中的绿色输出箭头连接到平面文件目标。
  • 在数据流选项卡上放置一个Row Count转换,并将其配置为使用Variable User:ErrorCount
  • 将平面文件源中的红色输出箭头连接到行数转换。
  • 放置平面文件目标并将其配置为使用Error连接管理器。
  • 使用Error连接将输出从行计数连接到平面文件目标。
  • 您的数据流任务应如屏幕快照# 4 所示。
  • 在“控制流”选项卡上,双击“文件系统任务”。
  • 在文件系统任务编辑器上,将Operation设置为Delete file,并将SourceConnection设置为Error。请参阅屏幕截图# 5
  • 屏幕快照# 6 中显示了包执行之前文件夹路径C:\temp的内容。
  • 数据流选项卡的执行显示在屏幕截图# 7 中。
  • 控制流执行如截图# 8 所示。
  • 软件包执行后文件夹路径C:\temp的内容显示在屏幕快照# 9 中。
  • 为了显示此方法的实际效果,我将Source连接管理器的第二列更改为整数(即​​使状态名称为字符串),以便数据流任务重定向到Error输出。
  • 场景 2 数据流选项卡的执行显示在屏幕截图# 10 中。
  • 场景 2 控制流执行如屏幕快照# 11 所示。请注意,由于错误文件不为空,因此未执行文件系统任务。
  • 场景 2 软件包执行后的文件夹路径C:\temp的内容显示在屏幕快照# 12 中。请注意,即使没有成功的行,文件Destination.txt仍然存在。这是因为该示例仅删除错误文件(如果为空)。

  • 可以使用类似的逻辑删除空的目标文件。

    希望能有所帮助。

    截图#1:

    截屏2:

    截屏#3:

    截屏4:

    截屏5:

    截图#6:

    截图#7:

    截屏#8:

    截图#9:

    截图#10:

    截屏11:

    截图#12:

    关于ssis - 平面文件源错误在SSIS中的输出连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5582390/

    相关文章:

    sql-server - 通知运算符(operator)任务与作业失败时通知

    sql-server - OLE DB 源到具有不同列的多个目标

    visual-studio-2010 - SSIS 包 2005 和 2008 可以用什么版本的 Visual Studio 编辑?

    c# - 如何为来自不同公司的断开连接的系统同步两个数据库

    sql-server - 部署后,SSIS脚本组件不起作用。关于ComponentVersionMismatchError的投诉

    sql-server - SSIS - 由于可能会丢失数据,因此无法转换该值

    c# - 在 SSIS 中使用 C# 连接到 SharePoint 列表

    sql - 找不到Oracle客户端和网络组件

    Azure 数据工厂映射数据流 VS SSIS

    sql-server - 与通过 SSMS 手动执行相比,通过 SSIS(通过 SQL 代理作业)存储过程运行速度慢 24,000%