如何将具有重复主键记录的平面文件导入 SQL table

How to import flat file with duplicate primary key records into SQL table

我有一个 SQL table 和 Case_id 作为主键。我正在使用 Visual Studio SSIS 将平面文件导入 table 和一个 Task Factory Upsert destination 组件来处理 insert/update 部分。源文件还有一列更新日期。

如果我在源文件中有一条记录,其中 Case_id 与目标 table 中已有的 Case_id 匹配,则更新插入工作正常。但是,如果源文件包含多个具有相同主键和不同更新日期的记录,则包将因主键冲突而失败。我没有看到任何允许我 select 仅具有最新更新日期的记录的功能。

关于如何处理主键违规的任何想法?我在想我可能需要放弃 Upsert 组件并使用某种带有 MAX 更新日期的 MERGE 语句。我正在使用 SQL Server 2019、Visual Studio 2019 和 SentryOne 任务工厂。

您可能需要执行简单的完全加载模式或只采用增量加载。

在将平面文件加载到暂存区之前 table,您可以对 SSIS 排序转换组件进行排序:

The Sort transformation sorts input data in ascending or descending order and copies the sorted data to the transformation output. You can apply multiple sorts to an input; each sort is identified by a numeral that determines the sort order. The column with the lowest number is sorted first, the sort column with the second lowest number is sorted next, and so on