如何在SQLite中实现真空入内?

ndasle7k  于 2023-06-23  发布在  SQLite
关注(0)|答案(1)|浏览(119)

我有一个数据库,其中有许多行,这些行随着时间的推移被添加和删除。它变得相当大,当删除行时,sqlite不会释放空间。
需要运行手动vacuum来压缩数据库。我一直在尝试运行吸尘器,但我不能让命令工作。official documentation没有解释太多,也没有给予工作示例。
如何在sqlite中使用VACUUM INTO

vqlkdk9b

vqlkdk9b1#

我理解你的沮丧,上次我不得不运行真空也花了我一整个下午。医生当然可以更好地解释参数。
在sqlite 3中:

VACUUM main INTO 'C:\\Users\\username\\PycharmProjects\\project\\dbcompacted.sqlite';

默认架构名称为main。现有模式可以用PRAGMA database_list;列出。
此语法在sqlite 3.15(2016年10月)中引入。在旧版本中,模式名称被硬编码到main中,它不能作为参数传递。https://www.sqlite.org/lang_vacuum.html
根据sqlite版本的不同,schema参数可能是可选的,也可能被忽略。
指定绝对路径(对于Windows,则指定转义反斜杠字符)。当前目录可以是任何内容,这取决于数据库的打开方式和查询的执行方式。对我来说,当省略完整路径时,它总是失败,并出现错误unable to open database: dbcompacted.sqlite

相关问题