ToB企服应用市场:ToB评测及商务社交产业平台
标题:
修复sqlite3数据库db文件(sqlite3的db文件打不开)
[打印本页]
作者:
我可以不吃啊
时间:
2024-7-26 10:00
标题:
修复sqlite3数据库db文件(sqlite3的db文件打不开)
天行健,君子以自强不息;阵势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理条记,分享记载为主,如有错误请指正,共同学习进步。
在不同系统中修复文件的下令有些许差异
但不管在哪个系统中,都须要先安装sqlite3工具,才能利用以下下令
以下下令中sqlite.db就是损坏的db文件名
一、Linux环境中修复
在linux系统中实行以下
1. sqlite3版本检查
检查sqlite3版本
sqlite3 --version
复制代码
进行完整性检查的版本不低于3.25.2
2. 文件完整性检查
完整性检查下令,其中sqlite.db是数据库文件的名称
sqlite3 sqlite.db
"PRAGMA integrity_check;"
复制代码
如果报以下错误则表示文件完整性报错,文件损坏
Error: database disk image is malformed
3. 连接数据库
利用sqlite3工具连接数据库
sqlite3 sqlite.db
复制代码
4. 通过db文件生成sql文件
依次输入以下下令,将sql语句输出到old.sql中
.mode insert
复制代码
回车
.output ./old.sql
复制代码
回车
.dump
复制代码
参数解释:
.mode insert
:表示后续的查询结果将以插入语句的情势进行输出
.output ./old.sql
:表示将查询结果或其他输出重定向到指定的文件中
.dump
:该下令将数据库的结构和内容转储为 SQL 语句,可以备份数据库或将其迁移到其他 SQLite 数据库
实行退却出工具
.exit
复制代码
5. 通过处理sql获取数据完整sql
编辑 old.sql 文件,并输出为 new.sql 文件
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 数据库文件
sqlite3 ./repaired.db ".read ./new.sql
"
复制代码
最终生成的repaired.db 即为修复后的数据库文件
二、Windows环境中修复
在在windows系统中实行以下
1. sqlite3版本检查
检查sqlite3版本
sqlite3 --version
复制代码
进行完整性检查的版本不低于3.25.2
2. 文件完整性检查
完整性检查下令,其中sqlite.db是数据库文件的名称
sqlite3 sqlite.db
"PRAGMA integrity_check;"
复制代码
如果报以下错误则表示文件完整性报错,文件损坏
Error: database disk image is malformed
3. 连接数据库
利用sqlite3工具连接数据库
sqlite3 sqlite.db
复制代码
4. 通过db文件生成sql文件
依次输入以下下令,将sql语句输出到old.sql中
.mode insert
复制代码
回车
.output ./old.sql
复制代码
回车
.dump
复制代码
参数解释:
.mode insert
:表示后续的查询结果将以插入语句的情势进行输出
.output ./old.sql
:表示将查询结果或其他输出重定向到指定的文件中
.dump
:该下令将数据库的结构和内容转储为 SQL 语句,可以备份数据库或将其迁移到其他 SQLite 数据库
先不退出,接着实行下面的下令
5. 创建新文件
创建一个新的db文件用于存储新的修复后的数据
.open newdb.db
复制代码
回车,生成一个新的db文件newdb.db
然退却出
.exit
复制代码
6. 连接新文件
通过sqlite3连接新文件,也就是新的数据库newdb.db
sqlite3 newdb.db
复制代码
7. 通过处理sql获取数据完整sql
编辑 old.sql 文件,并输出为 new.sql 文件
cat ./old.sql | grep -v TRANSACTION | grep -v ROLLBACK | grep -v COMMIT >./new.sql
复制代码
下令从old.sql 文件中读取内容,过滤掉包含 “TRANSACTION”、“ROLLBACK” 和 “COMMIT” 的行,然后将结果生存到new.sql 文件中,目的是生成一个不包含事务语句的导出文件
从new.sql中生成新文件内容
.read ./new.sql
复制代码
最终newdb.db 即为修复后的数据库文件
注:
由于修复的原理是通过sql日记进行一一读取逆向写入,故恢复时间略久,需耐心等候
感谢阅读,祝君暴富!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4