几天前,我在使用sqlite3数据库时注意到,在删除大量数据(精确地说是整个表格)后,文件大小并没有改变(表格使用了5MB)。虽然这不是我要问的数据库,但也许与我的问题有关。
我有一堆数据库,我正在使用grep -a查找特定消息,我成功地找到了一个大小为50MB的数据库,看起来非常完美!然而,用sqlite3数据库查看器(或sqlite3命令行工具)打开数据库时,表格中只有800多个条目。当前的自动增量索引超过18,000,这应该是表格应该具有的条目数。通过grep查看.db文件,我想要的一切都似乎都在那里,但我猜它们被某种方式“隐藏”了。
如何从sqlite数据库中检索所有数据?请注意,.dump 也不包括我要查找的信息。如果您能简要解释一下这是为什么,以及当我删除一个5MB的表时,数据实际上并没有被删除/文件大小不会缩小,我会很感激。
(请注意,这个数据库不是我创建的,也从未编辑过,它是Instagram的直接消息数据库。)
我有一堆数据库,我正在使用grep -a查找特定消息,我成功地找到了一个大小为50MB的数据库,看起来非常完美!然而,用sqlite3数据库查看器(或sqlite3命令行工具)打开数据库时,表格中只有800多个条目。当前的自动增量索引超过18,000,这应该是表格应该具有的条目数。通过grep查看.db文件,我想要的一切都似乎都在那里,但我猜它们被某种方式“隐藏”了。
如何从sqlite数据库中检索所有数据?请注意,.dump 也不包括我要查找的信息。如果您能简要解释一下这是为什么,以及当我删除一个5MB的表时,数据实际上并没有被删除/文件大小不会缩小,我会很感激。
sqlite> .dbinfo
database page size: 4096
write format: 1
read format: 1
reserved bytes: 0
file change counter: 366
database page count: 11405
freelist page count: 10372
schema cookie: 2
schema format: 4
default cache size: 0
autovacuum top root: 0
incremental vacuum: 0
text encoding: 1 (utf8)
user version: 7
application id: 0
software version: 3008005
number of tables: 3
number of indexes: 1
number of triggers: 0
number of views: 0
schema size: 737