【问题标题】:Extract and load data from multiple sources SSIS从多个源 SSIS 中提取和加载数据
【发布时间】:2018-08-08 00:59:22
【问题描述】:

我打算创建一个数据仓库并使用 SSIS 从 oracle 加载数据到 SQL Server。 DWH 的延迟时间为 5 分钟。

我需要每 5 分钟运行一次包,因为源上的 update_date_time 介于上次更新和当前时间之间。我打算在目标数据库中创建一个新表,记录提取运行的时间,以便我可以比较该表中的时间。

您能告诉我如何使用 SSIS 实现这一目标吗?

如果我使用下面的包,它会多次更新新表,但我只希望它每次运行包时更新该表一次

【问题讨论】:

  • 您正在尝试在目标端创建一个日志表,记录运行该包所花费的时间。这就是你想要达到的目标吗?
  • 是的。我无法用言语表达。我需要将提取的运行时间保存在单独的表中。但我不知道该怎么做。

标签: sql-server ssis data-warehouse dataflowtask


【解决方案1】:

这就是我的做法。在 DFT 之前和之后,我包括 Execute SQl 转换(Execution_InitExecution_complete)以写入日志表。其中有一个存储过程写入日志表(我创建的)、包名称、开始时间(第一个)和结束时间(第二个)以及其他详细信息。我认为您可以按照相同的方式进行操作。

【讨论】:

  • 太完美了。我会尝试一下。我目前使用事件处理程序来做到这一点。我正在尝试将当前日期放入包开头的变量中。你能告诉我我该怎么做吗?我一直在尝试使用 @[System::StartTime] 但这不起作用。它显示了昨天的时间。我需要这个变量来加载增量。如果我在事件处理程序 onpreExecute 的表达式任务中使用获取日期,它会返回我最新的时间
  • 我使用的是getdate() 来加载到表中。在execute sql任务中,有一个存储过程,我只是在加载开始时加载当前系统时间,最后加载相同。很简单。
  • 我需要在最后而不是在开始时更新表格。我已经能够得到时间,但它以某种方式将其选为 11:49:30 而不是 11:49:29 !!!将不得不解决更多问题
  • 您采用了哪种方法?我建议的那个?
  • 为此,您也可以按照相同的方法并在Execute SQL Task 中使用存储过程,并且可以将sp 的out 参数存储到变量中。
【解决方案2】:

我认为您在谈论增量负载。检查此链接:https://dwbi.org/etl/etl/53-methods-of-incremental-loading-in-data-warehouse

实施 Delta 后,只需创建一个作业以在您需要的时间运行您的包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多