You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重置DuckDB数据库文件存储大小?删除表后怎样缩减文件体积?

缩减DuckDB数据库文件大小的实用方法
  • 执行VACUUM命令
    DuckDB不会自动回收删除表/数据后空出的空间,必须手动触发空间回收。在Python里直接通过连接执行即可:
import duckdb

with duckdb.connect("your_db.db") as conn:
    conn.execute("VACUUM")

这个命令会重写整个数据库文件,把未使用的空间还给操作系统。注意执行时要确保没有其他程序在连接这个数据库。

  • 导出重建数据库
    如果VACUUM效果不理想,或者需要彻底清理,就把有用的数据导出来,再重建数据库:
  1. 导出需要保留的表到Parquet或CSV(Parquet更高效):
with duckdb.connect("your_db.db") as conn:
    conn.execute("COPY keep_table TO 'keep_table.parquet' (FORMAT PARQUET)")
    # 多个表就循环处理每个要保留的表
  1. 删除原数据库文件,新建数据库并导入数据:
import os

os.remove("your_db.db")
with duckdb.connect("your_db.db") as new_conn:
    new_conn.execute("COPY keep_table FROM 'keep_table.parquet' (FORMAT PARQUET)")

这种方式能彻底清除所有冗余空间,适合数据量不大的场景。

  • 用VACUUM FULL(DuckDB 0.9.0及以上)
    如果你的DuckDB版本是0.9.0或更新,试试VACUUM FULL命令,它比普通VACUUM更彻底,能释放所有未被使用的空间:
with duckdb.connect("your_db.db") as conn:
    conn.execute("VACUUM FULL")
  • 清理残留临时文件
    如果数据库曾经异常终止,可能会在同目录下留下.tmp结尾的临时文件,这些文件不会自动清理。先关闭数据库连接,然后删除这些临时文件也能节省空间。

内容的提问来源于stack exchange,提问作者Islam Mammadov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:05:08