跳到正文
跟我做
S
数据存储免费,公有领域更新 2026/10/24

SQLite

单文件的嵌入式数据库,不需要独立服务。用来记录批量任务状态、做去重和断点续跑,脚本换个目录就能继续跑。

适合什么

  • 记录批量任务的状态:待处理、运行中、完成、失败。
  • 用唯一主键做去重,避免重复处理同一条数据。
  • 单机脚本、桌面工具、离线流程的本地存储。
  • 需要一个能随时备份、复制、带走的数据文件。

不适合什么

  • 多台服务器同时高频写入同一个库。
  • 把大图片、视频等二进制文件当仓库使用。
  • 需要复杂权限、账号体系和远程访问的场景。

常用命令

打开数据库:

sqlite3 jobs.db

查看表和结构:

.tables
.schema jobs

开启 WAL 模式,让读写互不阻塞:

PRAGMA journal_mode = WAL;

生成一份一致的备份快照:

sqlite3 jobs.db "VACUUM INTO 'jobs-backup.db';"

在脚本里用

Node 22.5 起提供内置模块 node:sqlite,不需要额外安装依赖:

import { DatabaseSync } from "node:sqlite";

const db = new DatabaseSync("jobs.db");
db.exec("PRAGMA journal_mode = WAL;");

版本较旧时可能需要加 --experimental-sqlite 参数。其它语言也有成熟的驱动,SQL 本身在各语言里是通用的。

注意

  • 不要直接复制正在写入的数据库文件,WAL 模式下还有 -wal 和 -shm 文件,用 VACUUM INTO 做快照更稳。
  • 事务里不要做网络请求,先领任务、提交事务,再处理。
  • 定期清理已完成任务里的敏感原文,保留状态和结果即可。
  • 数据库变大后执行 VACUUM 回收空间,但不要在任务高峰期做。

用它的教程

全部教程