Sql ETL包最初加载所有数据,然后下次运行以仅加载更改或新项的最佳方法

Sql ETL包最初加载所有数据,然后下次运行以仅加载更改或新项的最佳方法,sql,sql-server,ssis,etl,sql-job,Sql,Sql Server,Ssis,Etl,Sql Job,我是SSIS新手,希望ETL包创建的最佳方法是最初加载所有数据,然后下次运行以仅加载更改或新项目。我将在ScheduleSQL作业中使用该包。我知道我可以将SSIS包设置为截断目标表,但对我来说,这是一种资源浪费,如果需要大型表,事务日志将非常庞大 提前谢谢 我认为实现这一目标的方法不止一种: 添加包含上次插入的ID(或主键值)的引用表,并且每次都必须更新此表 使用,您可以参考本文以了解更多信息:(注意,数据库必须配置为启用CDC-可能不适用于您的情况) 将LastUpdate列添加到表中,并且

我是SSIS新手,希望ETL包创建的最佳方法是最初加载所有数据,然后下次运行以仅加载更改或新项目。我将在ScheduleSQL作业中使用该包。我知道我可以将SSIS包设置为截断目标表,但对我来说,这是一种资源浪费,如果需要大型表,事务日志将非常庞大


提前谢谢

我认为实现这一目标的方法不止一种:

  • 添加包含上次插入的ID(或主键值)的引用表,并且每次都必须更新此表
  • 使用,您可以参考本文以了解更多信息:(注意,数据库必须配置为启用CDC-可能不适用于您的情况)
  • LastUpdate
    列添加到表中,并且只读日期,其中
    LastUpdate
    列值高于上次运行的SSIS作业日期

  • 通常,这是通过在源表中设置类似于
    LastUpdated
    的日期来实现的。然后将其与目标中的
    LastUpdated
    值进行比较,如果源记录的日期较新,则加载它,如果没有,则忽略它。感谢您的回复。我还发现缓慢改变维度也可以实现这一点。