我想定期从db2导出数据并将其加载到另一个数据库进行分析。 为了做到这一点,我需要知道自从我上次从给定表中导出内容以来插入/更新了哪些行。
一个简单的解决方案可能是为每个表添加一个时间戳并将其用作参考,但我目前没有这样的TS,如果可能的话我想避免添加它。
是否有其他解决方案可以找到在给定时间之后添加/更新的行(或其他可以解决我问题的行)?
答案 0 :(得分:1)
在Db2(对于LUW)中有一个名为
的时间戳的简单选项ROW CHANGE TIMESTAMP
这是由Db2管理的,可以定义为HIDDEN,因此现有的SELECT * FROM查询不会检索会导致额外费用的新行。
查看Db2 CREATE TABLE documentation
此功能最初是为乐观锁定添加的,但也可用于此类情况。
Db2 z / OS有一个类似的概念 - 你必须检查出来,因为我没有尝试过这个。
原因还有其他解决方法,如复制等。
答案 1 :(得分:0)
如果您没有时间戳列,则无法执行此操作。使用时间戳,您可以知道哪些是新行或已修改的行。
您还可以使用TimeTravel功能获取新值,但这意味着时间戳列。
另一种选择是将表放在追加模式中,然后在给定的一行之后获取行。但是,此选项在重组后不确定,并且会影响性能和空间利用率。
一种可能的选择是使用SQL复制,但这需要额外的表来进行分段。
最后,另一种选择是使用db2ReadLog API读取日志,但这意味着开发。此外,只需将存档日志应用到新数据库中,但数据库将保持前滚暂挂状态。