首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从表中备份/删除的最快方法

从表中备份/删除的最快方法
EN

Stack Overflow用户
提问于 2021-05-30 12:59:41
回答 1查看 56关注 0票数 1

我正在尝试从大于50M行的表中备份一些数据。这张桌子看起来像这样

代码语言:javascript
复制
# 
entry_id             : int unsignedauto_increment   # unique entry id
---
time=CURRENT_TIMESTAMP : timestamp                  # current timestamp
room                 : varchar(255)                 # Room
id                   : varchar(255)                 # Sensor ID / NAME
value                : double                       # sensor value

我的计划是

获取有限数量的键(即fetch('KEY', limit=some_large_number))

  • Retrieve表条目,用于这些键,

  • ,保存磁盘上的数据块,

  • ,删除属于密钥

  • 的表条目,重新开始.

<代码>G 213)

仅仅抓取(比方说1_000_000条目)是相当快的(几秒钟),但是如果我想通过检索主键->取取数据->删除这些条目--我基本上只能抓取数据(~ 100_000条目>20分钟或超时(?))。

使用数据联合逻辑执行此任务的最优雅/高效的方法是什么?

(Datajoint版本'0.13.2')

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-30 14:11:46

如果您的数据没有变化,那么您可以使用limitoffset关键字跨出表,在不删除或限制的情况下取块。不需要首先检索主键、限制提取或删除块。

代码语言:javascript
复制
step = 1_000_000
for chunk in range((len(table) + step - 1) // step):
    block = table.fetch(limit=step, offset=step * chunk)
    ... # save block

如果这是一个简单的备份,那么删除是不必要的。如果您需要删除数据,您可以一次性删除它的结尾。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67761422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档