我有一个数据库,其中有许多行随着时间的推移添加和删除。它变得相当大,并且删除行时 sqlite 不会释放空间。
需要运行手册vacuum来压缩数据库。我一直在尝试运行真空,但无法让命令工作。官方文档没有解释太多,也没有给出工作示例。
如何VACUUM INTO在sqlite中?
我理解您的沮丧,上次我不得不运行 VACUUM 时也花了我一整个下午。该文档当然可以更好地解释参数。
在sqlite 3中:
VACUUM main INTO 'C:\\Users\\username\\PycharmProjects\\project\\dbcompacted.sqlite';
Run Code Online (Sandbox Code Playgroud)
默认架构名称是main。现有模式可以用 列出PRAGMA database_list;。
此语法是在 sqlite 3.15(2016 年 10 月)中引入的。在旧版本中,模式名称被硬编码到 main,它不能作为参数传递。https://www.sqlite.org/lang_vacuum.html
根据 sqlite 版本,模式参数可能是可选的,也可能被忽略。
指定绝对路径(以及 Windows 的转义反斜杠字符)。当前目录可以是任何目录,具体取决于数据库的打开方式和查询的执行方式。unable to open database: dbcompacted.sqlite对我来说,当省略完整路径时,它不断失败并出现错误。