我在SSIS中有一个平面文件源连接。我为错误输出创建了一个平面文件目标连接。我已经用红色箭头连接了它。问题是即使平面文件源中没有错误,也会创建错误输出文件。即使没有错误,“错误平面文件目标”也始终变为绿色。如何解决。提前致谢
最佳答案
可能您已经找到了解决方案。我希望这可以帮助寻求解决此问题的人。
SSIS中没有内置数据流任务设置可用于执行此操作。您可以在Data Flow任务中结合使用Row Count
转换和Control Flow上的File System Task
来实现此目的。
这是有关如何执行此操作的分步过程。在此示例中,我使用了一个名为Country_State.csv
的csv文件,其中包含国家和地区作为源文件。
场景:
该示例包将读取该文件,然后将其写入名为Destination.txt
的文本文件。在这种情况下,将创建错误文件Error.txt
,但是如果没有错误,则稍后将其删除。在这里,我将文件存储在路径c:\temp\
中
分步流程:
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
粘贴到表达式文本框中。 Source
连接管理器。 Destination
连接管理器。 Row Count
转换,并将其配置为使用Variable User:ErrorCount
。 Error
连接管理器。 Error
连接将输出从行计数连接到平面文件目标。 Delete file
,并将SourceConnection设置为Error
。请参阅屏幕截图# 5 。 C:\temp
的内容。 C:\temp
的内容显示在屏幕快照# 9 中。 Source
连接管理器的第二列更改为整数(即使状态名称为字符串),以便数据流任务重定向到Error
输出。 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/