sqlite数据库迁移(恢复数据库)

sqlite数据库迁移(恢复数据库),第1张

概述方法一:使用sqlite3.exe工具    在DOS命令下,进入相应目录,执行(执行前先装要恢复数据库复制到sqlite3.exe相同目录下:storeDatabase.db3)       1.获取信息    sqlite  storeDatabase.db3    sqlite>PRAGMA integrity_check    获得提示  "*** in database main ** 方法一:使用sqlite3.exe工具
在DOS命令下,进入相应目录,执行(执行前先装要恢复的数据库复制到sqlite3.exe相同目录下:storeDatabase.db3)
1.获取信息
sqlite storeDatabase.db3
sqlite>PRAGMA integrity_check

获得提示

"*** in database main ***
Page 2455: btreeInitPage() returns error code 11
On tree page 4086 cell 122: Child page depth differs
On tree page 4086 cell 123: Child page depth differs"


可以尝试通过简单的导出导入方式对损坏的库文件作回复。


2.导出数据

sqlite3 my.sqlite3
sqlite>.output tmp.sql
sqlite>.dump
sqlite>.quit

3.再倒入到一个新库中

sqlite3 mynew.sqlite3
sqlite>.read tmp.sql
sqlite>.quit

4.总结:此方法 *** 作很简单,但如果遇到较大的数据库时会花费很长时间.




方法二:
1.获取信息
sqlite storeDatabase.db3
sqlite>PRAGMA integrity_check;


获得提示


*** in database main ***
Page 1518: btreeInitPage() returns error code 11
On tree page 1566 cell 2: Child page depth differs
On tree page 1566 cell 3: Child page depth differs
sql error: database disk image is malformed
可以尝试通过简单的导出导入方式对损坏的库文件作回复。

2.导出数据

sqlite3 my.sqlite3
sqlite>.output tmp.sql
sqlite>.dump
sqlite>.quit


3.创建一个新的数据库,并创建表(所有表与现有数据库相同)
创建数据库可以用sqlite Expert Personal(简称sqlEP)工具创建(或直接创建一个文件(后缀名为.db3))
创建所有表:从第2步导出的数据查找到所有创建表的语句,然后在sqlEP中执行即可.

4.如果原storeDatabase数据库是格式为"UTF-16",如果要导数据到新的数据库,必须确保此属性相同

PRAGMA enCoding = "UTF-16";

5.附加原来的数据库

ATTACH 'D:/storeDatabase3.db3' AS database1


6.复制原数据库中没有问题的数据表到新数据库中(速度快)
insert into T_ProductSize(C_ProductID,C_SizeValue,C_Sizename,C_SizeProperty1,C_SizeProperty2,C_SizeProperty3,C_SizeProperty4,C_SizeProperty5,
C_SizeProperty6,C_SizeProperty7,C_SizeProperty8,C_SizeProperty9,C_SizeProperty10)

select C_ProductID,

C_SizeProperty6,C_SizeProperty10

from database1.T_ProductSize


7.复制错误数据表

1)先通过tmp.SQL语句找到可以访问的数据序列值(或日期)

执行sql创建新表语句


2)再通过查询语句插入大部分数据
insert into [pages] (
[ID],[C_BRAND],[C_Pagename],[C_Title],[C_Wares],[C_MainSort],[C_IsShowlogo],[C_IsMarketStat],[C_ShowPic],[C_AccountBookID]
,[C_Keywords],[C_WareKeys],[C_WareTypes],[C_OrderType],[C_WareBrands],[C_colors],[C_Prices],[C_Sex],[C_IsNews]
,[C_Isspecials],[C_LenStyles],[C_Styles],[C_CreateTime],[C_IsHIDe],[C_HIDeTime],[C_IsCstHot],[C_Necklines],[C_Colours]
,'C_IsChangecolor1','C_IsChangecolor2','C_OrderAllows','C_OrderMadeAllows','C_TryZheng','C_TryFan')
select [ID],[C_Colours]

,'C_TryFan' from database1.Pages where ID<3040


3)最后插入剩下的部分数据
INSERT INTO pages VALUES(....);
INSERT INTO pages VALUES(....);
INSERT INTO pages VALUES(....);
....

此方法执行速度快,适合大数据库的转移 总结

以上是内存溢出为你收集整理的sqlite数据库迁移(恢复数据库)全部内容,希望文章能够帮你解决sqlite数据库迁移(恢复数据库)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1172367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存