如何清理SQLite数据库?

45

我想知道如何清理sqlite数据库。 我尝试了从命令提示符中使用手动VACUUM命令来清理整个数据库:

 $sqlite3 database_name "VACUUM;";

但是它报错了:

near "database_name": syntax error.

还有自动清理功能:

PRAGMA auto_vacuum = INCREMENTAL;

并尝试对特定表进行如下操作:

VACUUM table_name;

但是没有结果。

5个回答

37

在语法中不需要指定表名,只需使用 VACUUM 命令即可。

此外,它仅清除主数据库文件,而不清除任何附加的数据库文件。

欲了解更多信息,请参考 SQLite 的文档


1
这个页面表明在表上进行这种操作是可能的:http://www.tutorialspoint.com/sqlite/sqlite_vacuum.htm - Vihaan Verma
1
VACUUM from sqlite3 command line will only VACUUM main database. Attached databases can be VACUUMED only from sqlite3 verison version 3.15.0.For older versions, database name must be specified, this works from bash as mentioned in @yöliitäjä answer: $sqlite3 database_name 'VACUUM;' - Arnis Juraga
@VihaanVerma:似乎不支持对表进行清空(至少在我的SQLite v3.35.5上)。当我运行VACUUM MyTable时,会出现“执行完成,但出现错误。结果:未知数据库MyTable”的错误信息。 - Mustafa Özçetin

26

像这样发出命令:

$sqlite3 database_name 'VACUUM;'

实际上,这也是从命令行执行其他查询的方法:

$sqlite3 database_name 'select * from tablename;'

您可以使用数据库的完整路径:

$sqlite3 /path/to/db/foo.db 'VACUUM;'

19

执行以下命令:

VACUUM;

如果您使用DB Browser for Sqlite或通过命令提示符打开Sqlite:

cd C:\your_folder
C:\Users\your_user\AppData\Local\Android\Sdk\platform-tools\sqlite3.exe  -line your_db_name.db

并运行

VACUUM;

1
使用DB Browser for SQLite非常简单。用DB Browser for SQLite打开你的数据库文件,在执行SQL选项卡中执行VACUUM命令(按F5或点击执行按钮即可):

enter image description here


0

双击数据库文件,它将直接在命令行中运行。然后只需键入VACUUM;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接