如何为使用 SSIS 插入的每一行添加时间戳?
How to add a timestamp for each row inserted using SSIS?
我继承了一个 SSIS 项目,该项目通过 FTP 下载一些文件,将它们解压缩为某种奇怪的专有格式,然后将它们插入到一个小型数据仓库中。我现在需要为每条记录添加时间戳。我是 SSIS 的新手 - 但看到很多人使用派生列任务来处理此类事情。
到目前为止,我已经在数据库的 table 上添加了一个 datetime2(2) 列,添加了一个派生列任务并将其连接到我的包中的目标。我检查映射中的目的地并确保它显示在那里并已映射。
当我执行这个包时,我只在时间戳列中看到 NULLS。
这是我的衍生专栏:
我也不确定何时对包进行更改,我是否只需要点击 "save" 以确保当 SQL 作业运行包时,我的更改将被处死? SSIS 包没有 "publish"/"deploy" 类型的东西,对吧?这是一个附带问题,但也可能相关吗?我不知道...
我的回答:如果麻烦,请不要通过 SSIS 执行此操作。在目标 table 的新列上添加默认的 GETDATE()。这样就不用改SSIS包了,每次都能保证列中的数据。
我想不出派生列不起作用的任何原因。话虽如此,测试它的一种方法可能是在写入数据库中的另一列或写入 excel 文件之间添加一个脚本组件。查看它是否被每条流经它的记录触发。
脚本组件很简单:
Row.ColumnName = DateTime.Now;
这将做与派生列相同的事情,尽管开销稍大。
我继承了一个 SSIS 项目,该项目通过 FTP 下载一些文件,将它们解压缩为某种奇怪的专有格式,然后将它们插入到一个小型数据仓库中。我现在需要为每条记录添加时间戳。我是 SSIS 的新手 - 但看到很多人使用派生列任务来处理此类事情。
到目前为止,我已经在数据库的 table 上添加了一个 datetime2(2) 列,添加了一个派生列任务并将其连接到我的包中的目标。我检查映射中的目的地并确保它显示在那里并已映射。
当我执行这个包时,我只在时间戳列中看到 NULLS。
这是我的衍生专栏:
我也不确定何时对包进行更改,我是否只需要点击 "save" 以确保当 SQL 作业运行包时,我的更改将被处死? SSIS 包没有 "publish"/"deploy" 类型的东西,对吧?这是一个附带问题,但也可能相关吗?我不知道...
我的回答:如果麻烦,请不要通过 SSIS 执行此操作。在目标 table 的新列上添加默认的 GETDATE()。这样就不用改SSIS包了,每次都能保证列中的数据。
我想不出派生列不起作用的任何原因。话虽如此,测试它的一种方法可能是在写入数据库中的另一列或写入 excel 文件之间添加一个脚本组件。查看它是否被每条流经它的记录触发。
脚本组件很简单:
Row.ColumnName = DateTime.Now;
这将做与派生列相同的事情,尽管开销稍大。