【问题标题】:Pytables - Delete rows from table by some criteriaPytables - 按某些标准从表中删除行
【发布时间】:2012-05-16 19:56:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: python database python-2.7 hdf5 pytables


    【解决方案1】:

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

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

    在您归档旧记录的情况下,一种可靠的方法是通过复制包含 n 条记录的块(n 大小与您可以临时克隆的数据量相适应,这是一种交易方式,可以按块复制您想要归档的记录)在临时附加大小和复制删除操作的开销之间关闭),然后删除这 n 条记录,依此类推,直到归档所有满足条件的记录 Time32 字段早于给定的时间戳阈值。

    【讨论】:

    • 实际上,在一段时间内,我只是追加新行,我可以在归档过程中使用这个事实。如果有可能以某种方式将最近日期的行索引返回到时间戳阈值,我可以调用 removeRows(0,result_index) 方法并删除所有旧记录。但是,我怎样才能找到这一行的索引?有什么建议吗?
    猜你喜欢
    • 2020-09-23
    • 2019-01-07
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 2011-11-20
    • 2018-07-02
    相关资源
    最近更新 更多