使用SQLite Studio导出/导入SQL修复损坏的数据库
使用Zotero时遇到了数据库损坏,在软件中寸步难行,遂尝试修复数据库。
一、SQLite Studio简介
SQLite Studio是一款专为SQLite数据库设计的免费开源工具,支持Windows/macOS/Linux。相较于其他数据库管理工具,它具备以下核心优势:
- 可视化操作:无需记忆复杂命令即可完成数据库管理
- SQL脚本支持:可执行高级查询与批量操作
- 数据导出/导入:支持CSV/JSON/SQL等多种格式
- 跨平台兼容性:统一的操作体验适配各类系统
- 轻量化设计:仅需15MB安装空间即可运行
本文介绍借助该软件导出.sqlite数据库到.sql文件,再重新导入为新的.sqlite数据库的方法(以解决原数据库损坏问题)。
二、修复数据库操作流程
步骤1:导出原始数据库
启动SQLite Studio
连接数据库:
- 点击菜单栏【数据库】→【添加数据库】
- 选择损坏的.sqlite文件→【OK】
执行全库导出:
- 右键单击数据库→【导出数据库】,在弹出的对话框中选择“全选”→Next;
- 右键单击数据库→【导出数据库】,在弹出的对话框中选择“全选”→Next;
配置导出参数:
- 勾选"Add “IF NOT EXISTS” clause to “CREATE” statement"和"在“CREATE”语句前生成“DROP IF EXISTS”语句"
- 设置编码为UTF-8
最后点击“Finish”完成导出。
步骤2:创建新数据库
- 新建空白数据库:
- 【数据库】→【添加数据库】
- 指定保存路径→设置Page Size为4096(推荐)
- 执行SQL导入:
- 右键单击新建的数据库→从文件执行SQL
- 打开导出的.sql文件→点击执行按钮
在弹出的对话框中选择.sql文件,并选择正确的编码,勾选“跳过失败的SQL语句”:
便会开始导入:
- 验证导入结果:
PRAGMA integrity_check; -- 执行完整性校验 SELECT count(*) FROM sqlite_master; -- 对比对象数量
三、高级技巧与注意事项
部分导出策略:
- 遇到损坏表时单独导出其他表
ATTACH 'corrupt.db' AS old; CREATE TABLE new.users AS SELECT * FROM old.users;
大文件优化方案:
- 使用事务包裹INSERT语句
- 分批次执行(每10万条提交一次)
常见错误处理:
- 出现"database disk image is malformed"时:
- 尝试
.recover
命令 - 使用
sqlite3 corrupt.db ".output dump.sql" ".dump"
- 尝试
- 编码错误时添加
PRAGMA encoding='UTF-8';
- 出现"database disk image is malformed"时: