Pytables - 按某些条件从表中删除行

时间:2012-05-08 10:26:30

标签: python database python-2.7 hdf5 pytables

我有一个包含Time32列和大量行的表。我的问题是下一个。

当我的表达到千万行时,我希望开始存档早于指定值的每一行。为了创建查询,我将使用Time32列,它表示行中收集的数据的时间戳。因此,使用此查询我想删除工作表中的旧行,并存储在保存用于存储存档记录的其他表中。可能吗?如果是的话,最有效的方法是什么?

我知道whereAppend()方法,但是这个方法只复制记录,而不是从实际表中删除。请求建议。干杯!

1 个答案:

答案 0 :(得分:1)

将记录从给定数据库的一个表归档到另一个表的一般方法是将记录复制到目标表中,然后删除原始表中的相同记录。

也就是说,根据您的数据库引擎和构建在其上的语言的功能,您可以编写原子查询命令,为您执行原子“复制然后删除”,但它取决于您的数据库引擎功能

在您的旧记录存档的情况下,一个强大的方法是通过复制n个记录的块来复制您想要通过块存档的记录(n大小为您可以临时克隆的数据量,这是一个交易 - 在临时附加大小和复制删除操作的开销之间关闭,然后删除那些n条记录,依此类推,直到存档满足条件Time32字段的所有记录早于给定时间戳阈值。

相关问题