【问题标题】:How to add a timestamp for each row inserted using SSIS?如何为使用 SSIS 插入的每一行添加时间戳?
【发布时间】:2016-05-19 11:13:10
【问题描述】:

我继承了一个 SSIS 项目,该项目通过 FTP 下载一些文件,将它们解压缩为某种奇怪的专有格式,然后将它们插入到一个小型数据仓库中。我现在需要为每条记录添加一个时间戳。我对 SSIS 还很陌生 - 但见过很多人使用派生列任务来处理这类事情。

到目前为止,我已经在数据库中的表上添加了一个 datetime2(2) 列,添加了一个派生列任务并将其连接到我的包中的目标。我检查映射中的目的地,并确保它显示在那里并被映射。

当我执行这个包时,我只在时间戳列中看到 NULLS。

这是我的派生列:

我也不确定何时对包进行更改,我是否只需要点击“保存”以确保当 SQL 作业运行包时我的更改将被执行? SSIS 包没有“发布”/“部署”类型的东西,对吧?这是一个小问题,但也可能是相关的?我不知道...

【问题讨论】:

  • 我刚刚运行了一个测试来确定,您的设置应该可以正常工作。仔细检查新列的映射是否设置为派生列。

标签: visual-studio-2008 ssis bids


【解决方案1】:

我的回答:如果麻烦,请不要通过 SSIS 执行此操作。在目标表的新列上添加默认的 GETDATE()。这样就不用改SSIS包了,每次都保证列数据。

【讨论】:

  • 4 年后,我想……我为什么不这样做呢?大声笑
【解决方案2】:

我想不出派生列不起作用的任何原因。话虽如此,测试它的一种方法可能是在两者之间添加一个脚本组件,该组件写入数据库中的另一列或输出到 excel 文件。看看它是否被每条流过它的记录触发。

脚本组件很简单: Row.ColumnName = DateTime.Now;

这将与派生列执行相同的操作,尽管开销稍大。

【讨论】:

  • 我认为派生列是最简单的方法。
猜你喜欢
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
相关资源
最近更新 更多