我们有一个处理一个flatflat,将数据插入数据库的脚本任务,然后记录任何重复(通过存储proccedure)到SQL表,然后将其传递到工作流任务中查找该表和所有的数据写入到一个文件,然后trucates表。
问题是,即使有记录的0个错误,它总是写的日志平面文件。
有没有写一个平面文件,其中有> 0记录重复的记录表的方法吗?
我们有一个处理一个flatflat,将数据插入数据库的脚本任务,然后记录任何重复(通过存储proccedure)到SQL表,然后将其传递到工作流任务中查找该表和所有的数据写入到一个文件,然后trucates表。
问题是,即使有记录的0个错误,它总是写的日志平面文件。
有没有写一个平面文件,其中有> 0记录重复的记录表的方法吗?
下面是可能会给你摆脱那些没有记录错误文件的想法可能的选择。
这里是一步一步如何做到这一点的过程。 在这个例子中,我使用了一个名为csv文件Country_State.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
。 Data Flow Task
,然后将一个File System Task
。 Expression
并粘贴值@ErrorCount == 0
在Expression文本框。 Source
连接管理器。 Destination
连接管理器。 Row Count
的数据流标签转换和配置它使用可变User:ErrorCount
。 Error
的连接管理器。 Error
连接。 Delete file
,并设置SourceConnection到Error
。 请参阅截图#5。 C:\temp
包执行之前被示出在屏幕截图6#。 C:\temp
包执行后示于屏幕截图#9。 Source
连接管理器为整数(尽管状态名称是字符串),这样的数据流任务重定向到Error
输出。 C:\temp
方案2包执行后示于屏幕截图#12。 请注意,该文件Destination.txt存在,即使没有成功行。 这是因为,例如仅删除了错误的文件,如果它是空的。 同样的逻辑可以用来删除一个空目标文件。
希望帮助。
截图#1:
屏幕截图2:
屏幕截图3:
屏幕截图4:
截图#5:
屏幕截图6:
截图#7:
屏幕截图8:
截图#9:
屏幕截图10:
屏幕截图11:
屏幕截图12:
在执行任务之前检查文件的大小,你可以尝试this..put一个脚本,并添加一个“优先约束” ......真时,然后继续。 同
Dim FileInfo As System.IO.FileInfo
您可以获取该文件的长度一样...... FileInfo.Length。