【问题标题】:How to build SSIS package to UPSERT/DELETE data from Salesforce to SQL Server database?如何将 SSIS 包构建到从 Salesforce 到 SQL Server 数据库的 UPSERT/DELETE 数据?
【发布时间】:2019-06-06 02:23:15
【问题描述】:

我需要使用 SSIS+(第三方 - CozyRock)将数据从 Salesforce 提取到 SQL Server 2017 实例(一种方式)。

现在的问题是检索数据而不是将其复制到 SQL Server 数据库中?

我还想知道我是否可以在 Salesforce 上构建一个按钮来创建一个存储过程或作业来运行这个 SSIS 包,这可能吗?

我已经检查了 Andy Leonard 帖子中的 this,但还没有找到解决方案。

【问题讨论】:

    标签: sql-server ssis salesforce etl cozyroc


    【解决方案1】:

    有两种方法可以解决重复问题。

    1) 仅获取增量数据,如果您从 salesforce 提取的表具有 update_at 时间戳,您可以使用它来仅提取新的/更新的记录。

    2) 使用 MERGE 而不是插入或更新,它会更优雅地处理重复项enter link description here

    是的,您可以在 salesforce 中创建一个按钮并调用 shell 脚本,但是将 ssis 作业安排为每 5 分钟运行一次并从 salesforce 捕获更新会更容易

    【讨论】:

      【解决方案2】:

      简答。

      为了实现这一点,我们需要一个字段来跟踪记录的上次更新时间以及以下内容。

      第 1 步:

      • 设置来源:
        • 数据来源。将其设置为来源。
        • 将存储数据的来源。将其设置为目的地。

      第 2 步:

      • 按 ID 字段对数据流进行排序。

      第三步:

      • Merge Join,使用完全外连接合并它们。
      • 首先,选择源字段,然后选择目标字段。
      • 将带有 Source_ 前缀的输出重命名为源字段,将带有 Destination_ 前缀的 Destination 重命名。

      第 4 步:

      • 使用条件拆分按更改类型拆分记录。
      • 这里的逻辑是,使用记录中的那些必填字段(例如 Id)。
      • 第一个条件拆分:
        • 新记录:!ISNULL([Source_Id]) && ISNULL(Destination_ID)
        • 已删除记录:ISNULL([Source_Id]) && !ISNULL(Destination_ID)
        • 将默认输出设置为现有记录。

      第 5 步:

      • 插入新记录:使用 ODBC/OLE 目标并进行相应的设置和映射。

      第 6 步:

      • 更新记录:使用另一个条件拆分来查找已更新的报告。
      • 在条件拆分中使用此逻辑: 更新值:([Source_Id == Destination_Id])&&(([Source_LastUpdate != Destination_LastUpdate]))
      • 使用 OLE 命令:设置连接并在属性中构建更新查询并进行相应映射。

      第 7 步:

      • 删除记录:使用 OLE DB 命令删除 Id = Destination_Id 的记录

      Related Documentation

      【讨论】:

        猜你喜欢
        • 2012-06-12
        • 1970-01-01
        • 1970-01-01
        • 2012-09-29
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        相关资源
        最近更新 更多