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

3

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

1个回答

13

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

在SSIS中没有内置的数据流任务设置来完成此操作。您可以在数据流任务中使用Row Count转换,结合控制流中的File System Task来实现此操作。

以下是如何完成此操作的逐步过程。在本示例中,我使用名为Country_State.csv的csv文件作为源文件,其中包含国家和州。

场景:

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

逐步流程:

在连接管理器部分,创建三个平面文件连接,分别为“源”、“目标”和“错误”。参考截图#1。
“源”连接应指向csv文件路径c:\ temp \ Country_State.csv。有关此文件的内容,请参阅截图#2。
“目标”连接应指向名为c:\ temp \ Destination.txt的文本文件。
“错误”连接应指向名为c:\ temp \ Error.txt的文本文件。
创建一个数据类型为Int32的变量,命名为ErrorCount。
在控制流选项卡上,放置一个数据流任务,然后放置一个文件系统任务。
将数据流任务连接到文件系统任务。
右键单击数据流任务和文件系统任务之间的连接器。
在Precedence Constraint Editor上,将Evaluation operation更改为Expression,并将值@ErrorCount == 0粘贴到Expression文本框中。
您的控制流应如截图#3所示。
在数据流任务内部的数据流选项卡上,拖放Flat File Source并配置其使用Source连接管理器。
放置Flat File Destination并配置其使用Destination连接管理器。
将Flat File Source的绿色输出箭头连接到Flat File Destination。
在数据流选项卡上放置RowCount转换,并将其配置为使用变量User:ErrorCount。
将Flat File Source的红色输出箭头连接到RowCount转换。
放置Flat File Destination并配置其使用Error连接管理器。
使用Error连接将Row Count转换的输出连接到Flat File Destination。
您的数据流任务应如截图#4所示。
在控制流选项卡上,双击文件系统任务。
在文件系统任务编辑器中,将操作设置为Delete file,并将SourceConnection设置为Error。参见截图#5。
包执行前文件夹路径C:\ temp的内容如截图#6所示。
数据流选项卡执行如截图#7所示。
控制流执行如截图#8所示。
包执行后文件夹路径C:\ temp的内容如截图#9所示。
为了证明这实际上起作用,我更改了“源”连接管理器上的第二列为整数(尽管州名是字符串),以便数据流任务重定向到“错误”输出。
场景2数据流选项卡执行如截图#10所示。
场景2控制流执行如截图#11所示。请注意,文件系统任务未执行,因为错误文件不为空。
场景2包执行后文件夹路径C:\ temp的内容如截图#12所示。请注意,即使没有成功的行,Destination.txt文件也存在。这是因为该示例仅在错误文件为空时删除错误文件。

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

希望这有所帮助。

截图 #1:

1

截图 #2:

2

截图 #3:

3

截图 #4:

4

截图 #5:

5

截图 #6:

6

截图 #7:

7

截图 #8:

8

截图 #9:

9

截图 #10:

10

截图 #11:

11

截图 #12:

12


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接