有没有办法预先将我的SQLite数据库分配到一定的大小?目前我正在添加和删除一些记录,并希望在创建时避免这种情况。
答案 0 :(得分:5)
执行此操作的最快方法是使用zero_blob函数:
示例:
Y:> sqlite3 large.sqlite
SQLite版本3.7.4
输入“.help”获取说明
输入以“;”结尾的SQL语句
源码> 创建大表(a);
源码> 插入大值(zeroblob(1024 * 1024));
源码> drop table large;
源码> .q
Y:> dir large.sqlite
驱动器Y中的容积为个人
卷序列号为365D-6110
目录Y:\
01/27/2011 12:10 PM 1,054,720 large.sqlite
<小时/> 注意:正如凯尔在评论中正确指出:
每个blob的大小有限,因此如果您希望数据库大于~1GB,则可能需要插入多个blob。
答案 1 :(得分:2)
有一个hack - 将一堆数据插入数据库,直到数据库大小符合您的要求,然后删除数据。这是因为:
“当一个对象(表,索引或 从数据库中删除) 它留下了空旷的空间。这个 空的空间将在下一次重复使用 时间新信息被添加到 数据库。但在此期间, 数据库文件可能大于 严格必要。“
当然,这不是最可靠的方法。 (此外,您需要确保禁用auto_vacuum才能使其正常工作)。您可以在此处了解详情 - http://www.sqlite.org/lang_vacuum.html