假设我在 excel 中有以下列:级别、组、代码、名称、日期、具有以下值的附加信息:
1,A,1234,约翰,2019-09-01,信息 1
1,A,1234,约翰,2019-09-01,信息 2
我目前有以下导入逻辑,如果数据库中没有特定代码和级别的记录,则插入新记录,如果数据库中已存在代码,则更新记录。但是由于 excel 中没有唯一标识符,因此很难更新正确的记录。在这种情况下,常用的方法是什么?
假设在上面的示例中,组或日期将更改为一条记录。如何实现更新数据库中正确记录的逻辑。
最佳答案
如果没有唯一的主键,您将无法拥有不同的数据集。如果没有这样的主键,您将无法只更新一行,而是更新一个或多个类似的行。在当前状态下,无法准确跟踪更改。
如果您确实有一个唯一的主键,最简单的解决方案是附加一个日期时间作为跟踪更改的一种方式,并在任何值更改时将其添加为新行。您的数据集如下所示:
1, A, 1234, John, 2019-09-01, Info1, DateCreated, DateChanged
1, A, 1234, John, 2019-09-01, Info2, DateCreated, DateChanged2
1, A, 1234, John, 2019-09-01, Info3, DateCreated, DateChanged3
重要的是要记住,这仅适用于静态主键,通常用于复合键的某些字段可能不起作用。用户可以更改他们的姓名或纠正错误输入的出生日期,这可能会更改某些复合键。
在 SSIS 中,这将使用两个查找任务来实现:
这三个分支选项应考虑每个潜在状态:新记录、没有更改的现有记录、有更改的现有记录
关于sql - SSIS:Excel 源代码 - 是否可以跟踪在 excel 中所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58115654/