我想定期,例如每年一次,根据某些条件从DB2 9.7数据库归档一组表行。所以例如每年一次,归档所有创建日期早于1年前的EMPLOYEE行?
归档我的意思是数据被移出数据库模式并以可检索的格式存储在其他位置。这可能吗?
答案 0 :(得分:2)
如果您不需要通过程序访问存档数据,那么我建议:
echo '===================== export started '; values current time; -- maybe ixf format would be better? export to tablename.del of del select * from tablename where creation_date < (current date - 1 year) ; echo '===================== export finished ';
echo '===================== delete started '; values current time; delete from tablename.del of del where creation_date < (current date - 1 year) ; commit; echo '===================== delete finished ';
db2 connect to db user xx using xxx db2 -s -vtf export.sql 7z a safe-location-<date-time>.7z tablename.del if no errors till now: db2 -s -vtf delete.sql
同样,由于删除是非常敏感的操作,我建议有多个备份机制以确保不会丢失任何数据(例如删除有一些不同的时间范围 - 例如删除比1。5年)。
如果您需要系统访问存档数据,那么我建议使用以下方法之一:
答案 1 :(得分:0)
当然,为什么不呢?一个相当直接的方法是编写一个存储过程,它基本上会:
如果您只想将一部分列放入存档,只要您仍然在临时文件中捕获主键,就可以从仅包含这些列的视图中提取。