修复sqlite3数据库db文件(sqlite3的db文件打不开)

打印 上一主题 下一主题

主题 846|帖子 846|积分 2538

天行健,君子以自强不息;阵势坤,君子以厚德载物。

每个人都有惰性,但不断学习是好好生活的根本,共勉!

文章均为学习整理条记,分享记载为主,如有错误请指正,共同学习进步。

  

在不同系统中修复文件的下令有些许差异
但不管在哪个系统中,都须要先安装sqlite3工具,才能利用以下下令
以下下令中sqlite.db就是损坏的db文件名
一、Linux环境中修复

在linux系统中实行以下
1. sqlite3版本检查

检查sqlite3版本
  1. sqlite3 --version
复制代码
进行完整性检查的版本不低于3.25.2
2. 文件完整性检查

完整性检查下令,其中sqlite.db是数据库文件的名称
  1. sqlite3 sqlite.db
  2. "PRAGMA integrity_check;"
复制代码
如果报以下错误则表示文件完整性报错,文件损坏
Error: database disk image is malformed
3. 连接数据库

利用sqlite3工具连接数据库
  1. sqlite3 sqlite.db
复制代码
4. 通过db文件生成sql文件

依次输入以下下令,将sql语句输出到old.sql中
  1. .mode insert
复制代码
回车
  1. .output ./old.sql
复制代码
回车
  1. .dump
复制代码
参数解释:
.mode insert

:表示后续的查询结果将以插入语句的情势进行输出
.output ./old.sql

:表示将查询结果或其他输出重定向到指定的文件中
.dump

:该下令将数据库的结构和内容转储为 SQL 语句,可以备份数据库或将其迁移到其他 SQLite 数据库
实行退却出工具
  1. .exit
复制代码
5. 通过处理sql获取数据完整sql

编辑 old.sql 文件,并输出为 new.sql 文件
  1. cat ./old.sql | grep -v TRANSACTION | grep -v ROLLBACK | grep -v COMMIT >./new.sql
复制代码
下令从old.sql 文件中读取内容,过滤掉包含 “TRANSACTION”、“ROLLBACK” 和 “COMMIT” 的行,然后将结果生存到new.sql 文件中,目的是生成一个不包含事务语句的导出文件
从new.sql 生成新的修改好的repaired.db 数据库文件
  1. sqlite3 ./repaired.db ".read ./new.sql
  2. "
复制代码
最终生成的repaired.db 即为修复后的数据库文件
二、Windows环境中修复

在在windows系统中实行以下
1. sqlite3版本检查

检查sqlite3版本
  1. sqlite3 --version
复制代码
进行完整性检查的版本不低于3.25.2
2. 文件完整性检查

完整性检查下令,其中sqlite.db是数据库文件的名称
  1. sqlite3 sqlite.db
  2. "PRAGMA integrity_check;"
复制代码
如果报以下错误则表示文件完整性报错,文件损坏
Error: database disk image is malformed
3. 连接数据库

利用sqlite3工具连接数据库
  1. sqlite3 sqlite.db
复制代码
4. 通过db文件生成sql文件

依次输入以下下令,将sql语句输出到old.sql中
  1. .mode insert
复制代码
回车
  1. .output ./old.sql
复制代码
回车
  1. .dump
复制代码
参数解释:
.mode insert

:表示后续的查询结果将以插入语句的情势进行输出
.output ./old.sql

:表示将查询结果或其他输出重定向到指定的文件中
.dump

:该下令将数据库的结构和内容转储为 SQL 语句,可以备份数据库或将其迁移到其他 SQLite 数据库
先不退出,接着实行下面的下令
5. 创建新文件

创建一个新的db文件用于存储新的修复后的数据
  1. .open newdb.db
复制代码
回车,生成一个新的db文件newdb.db
然退却出
  1. .exit
复制代码
6. 连接新文件

通过sqlite3连接新文件,也就是新的数据库newdb.db
  1. sqlite3 newdb.db
复制代码
7. 通过处理sql获取数据完整sql

编辑 old.sql 文件,并输出为 new.sql 文件
  1. cat ./old.sql | grep -v TRANSACTION | grep -v ROLLBACK | grep -v COMMIT >./new.sql
复制代码
下令从old.sql 文件中读取内容,过滤掉包含 “TRANSACTION”、“ROLLBACK” 和 “COMMIT” 的行,然后将结果生存到new.sql 文件中,目的是生成一个不包含事务语句的导出文件
从new.sql中生成新文件内容
  1. .read ./new.sql
复制代码
最终newdb.db 即为修复后的数据库文件

注:
由于修复的原理是通过sql日记进行一一读取逆向写入,故恢复时间略久,需耐心等候

感谢阅读,祝君暴富!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表