简单缩小数据库
sqlite3 sqlite.db "VACUUM;"
数据库被锁
cp sqlite.db sqlite.db.backupsqlite3 sqlite.db .dump > backup.sql
sqlite3 new.db < backup.sql
sqlite3 new.db "PRAGMA integrity_check;" #检查数据库
如果标准的 .dump 命令无法成功导出数据,可以尝试使用 .recover 命令(适用于SQLite 3.33.0及更高版本):
sqlite3 corrupted.db ".recover" > backup.sql
sqlite3 new.db < backup.sql
简单缩小不咋管用的方法
首先导出数据
sqlite3 sqlite.db
sqlite>.output tmp.sql
sqlite>.dump
sqlite>.quit
再导入到一个新库中
sqlite3 new.sqlite.db
sqlite>.read tmp.sql
sqlite>.quit
覆盖原库并优化
cp -f new.sqlite.db sqlite.db
sqlite3 sqlite.db 'VACUUM;'
删除一些日志
cd /opt/nezha/dashboard/data && cp sqlite.db sqlite.db.bak && sqlite3 ./sqlite.db
.tables
.schema monitor_historiesbegin transaction;
delete from monitor_histories
where id < (
select min(id)
from (
select id
from monitor_histories
order by id desc
limit 10000
)
);
commit;
.exit
