我们有一个脚本任务,它处理flatflat,将数据插入数据库,然后将任何重复项(通过存储的过程)记录到SQL表中,然后将其传递给查找该表和工作流的工作流任务。将所有数据写入文件然后将表格固定。
问题是即使记录了0个错误,它总是写一个日志平面文件。
有没有办法写一个平面文件,其中有>重复日志表中有0条记录?
答案 0 :(得分:1)
这是一个可能的选项,可以让您了解删除没有记录的错误文件。
以下是有关如何执行此操作的分步过程。在这个例子中,我使用了一个名为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
粘贴到表达式 textbox。Source
连接管理器。Destination
连接管理器。Row Count
转换,并将其配置为使用变量User:ErrorCount
。Error
连接管理器。Error
连接将行计数的输出连接到平面文件目标。 Delete file
,并将 SourceConnection 设置为Error
。请参阅屏幕截图# 5 。C:\temp
的内容显示在屏幕截图# 6 中。C:\temp
的内容显示在屏幕截图# 9 中。Source
连接管理器上的第二列更改为整数(即使状态名称是字符串),以便数据流任务重定向到Error
输出。 / LI>
C:\temp
的内容显示在屏幕截图# 12 中。请注意,即使没有成功的行,也存在Destination.txt文件。这是因为该示例仅删除Error文件(如果为空)。类似的逻辑可用于删除空的目标文件。
希望有所帮助。
屏幕截图#1:
屏幕截图#2:
屏幕截图#3:
屏幕截图#4:
屏幕截图#5:
屏幕截图#6:
屏幕截图#7:
屏幕截图#8:
屏幕截图#9:
屏幕截图#10:
屏幕截图#11:
屏幕截图#12:
答案 1 :(得分:0)
你可以尝试这个..在执行任务之前输出一个脚本来检查文件大小,然后添加一个“优先约束”......当为真时,然后继续。与
Dim FileInfo As System.IO.FileInfo
你可以获得文件长度,如... FileInfo.Length。