gpt4 book ai didi

sql - SSIS:Excel 源代码 - 是否可以跟踪在 excel 中所做的更改?

转载 作者:行者123 更新时间:2023-12-04 20:51:41 25 4
gpt4 key购买 nike

假设我在 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 中,这将使用两个查找任务来实现:
  • 在第一个查找任务中比较主键。如果主键不存在,请使用派生列任务将 DateCreated 和 DateModified 设置为 GETDATE()。
  • 如果主键确实存在,则运行第二个查找任务来比较记录中的所有行。如果它们都相同,则意味着记录没有更改,并且不需要将更新发送到数据库。
  • 如果存在差异,则使用派生列 SSIS 任务仅将 DateModified 列更新为 GETDATE() 并将其添加为新行。

  • 这三个分支选项应考虑每个潜在状态:新记录、没有更改的现有记录、有更改的现有记录

    关于sql - SSIS:Excel 源代码 - 是否可以跟踪在 excel 中所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58115654/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com