在 SSIS 中导入之前删除文本文件的内容

Deleting the contents of a text file before importing in SSIS

我有一个 SSIS 包,它循环遍历一个文件位置,将数据从多个平面文件导入到一个 SQL 服务器 table 目的地。文件中的某些数据行无法处理,因此我已将任何失败的数据发送到单独的平面文件目标。

我的问题是,如果我选中 Overwrite data in the file 框,我只会收到数千行数据中的 3 行。如果我取消选中该框,那么我会得到一张更真实的图片,其中包含一百多个由于某种原因无法处理的记录。我不能这样离开,因为每次包裹 运行,最后 运行 的内容仍然存在。

我的问题是为什么会发生这种情况,我该如何解决?

Data Flow Task 位于 For Each Loop 容器中,所以我怀疑每次循环 运行 它都会覆盖发送到失败行平面文件的任何数据。但是,循环结束时出现的数据来自循环获取的第一个文件。

我可以编写一些 SQL 的脚本来防止这种情况发生吗?

在每个 运行 上,在 for 循环之前,删除文件(如果存在)并创建一个新文件,然后不要覆盖。

如果您想保留以前 运行 的历史记录,您可以在文件后加上 运行 id 或 datetime 值。如果这样做,您还可以 运行 清理以仅保留特定数量或日期范围内的某些文件。