首页 > 解决方案 > SSIS包如何根据查询有选择地导入CSV行

问题描述

我有多个 CSV 文件,每个文件有 100 列左右,我想使用 SSIS 包导入 SQL 数据库。这些 CSV 文件每晚都会收到,我希望我们的 SQL 表可以用作历史/跟踪更改表。

换句话说,我需要在导入之前根据唯一标识符评估 CSV 的每一行。我需要检查表中 ID 的最新(基于导入日期)条目,如果它存在并且与 CSV 中的新行不同,则应该导入它。如果它是重复的,它应该被忽略。如果它根本不存在,它也应该被导入。

我不能简单地过滤掉所有重复项,因为从 X 到 Y 然后再回到 X 的更改应该记录在表中(因为它是历史/更改表)。

最初我尝试使用平面文件导入 -> 查找工具 -> 数据库目标来使其工作,但看起来我不能修改查找工具以使用特定查询,而不是仅将指示的列与DB 看看它是否存在。有没有办法使用提供的 SSIS 工具来实现这一点?我能看到的唯一替代方法是创建一个自定义脚本任务来预先评估 CSV 中的每一行并将其写入临时表或仅包含需要插入的数据的新 CSV。这可能是一个完全可行的解决方案,但我担心性能问题。

标签: c#sql-servercsvssis

解决方案


推荐阅读