如何将具有重复主键记录的平面文件导入 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
我有一个 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