我如何从sqlite中恢复已删除的数据?
我想恢复被删除的记录,并从SQLite的数据库文件放置的数据,我如何从sqlite中恢复已删除的数据?
我检查我的数据库文件,文本编辑器,我看到丢弃的数据仍然是有..
我使用SQLite3.dll (in c#)
但我can` t找到一些属性打开分贝与丢失的数据或...
有没有任何库帮助我?或从sqlite数据库文件恢复数据的简单代码?
编辑1:
我试图找到一个数据恢复库或程序源码..许多searchs后,我发现http://www.devart.com/dotconnect/sqlite/docs/Devart.Data.SQLite~Devart.Data.SQLite.SQLiteDump.html
SQLiteConnection.Open();
SQLiteDump sqSqlDump = new SQLiteDump();
sqSqlDump.Connection = SQLiteConnection1;
sqSqlDump.IncludeDrop = true; //<<-- check here
sqSqlDump.Backup();
StreamWriter stream = new StreamWriter("d:\\dump.dmp");
stream.WriteLine(sqSqlDump.DumpText);
stream.Close();
,我可以使用IncludeDrop
财产为后盾数据我但这个图书馆是不是免费的,我不能使用它..我喜欢找到免费的图书馆或程序...
当你删除记录时,SQLite会删除数据。您可以实施一种模式,在该模式下数据只被标记为已删除,或者可能是存储所有版本数据的系统。您可以通过添加字段来标记这些属性。然后,当您选择时,将其更改为考虑新字段功能。
像:
select * from mytable where mytable.deleted<>true and etc=etc
的SQLite存储在一个文件中的所有它的数据。如果您有文件系统备份服务,则可以使用旧版本的数据库。
当SQLite删除记录时,可能在文件中留下了虚影数据。这些数据只是垃圾信息,不允许您在删除之前可靠地返回到前一个点。
SQLite数据库文件是二进制的,小心使用文本编辑器编辑它,如果你保存它将被损坏!
tanx帮助我,但我需要恢复库,我想打开db文件,我没有写程序..请检查Edit1 –
,因为SQLite通过编写新的B树和聚簇索引记录等来删除。你可能会发现有些东西的碎片,但是很可能大部分数据将永远消失。如果他们一次性删除很大比例,那么您更有可能看到文件中剩余的部分。 – AnthonyLambert
“大部分数据将会消失” - 这是不正确的。我只是不小心丢下了一个〜15k行的表格,当用编辑器打开它时,几乎所有内容都可以看到。恢复这可能是困难的,是的 – Blauhirn
通过雇佣一个(非常昂贵的)数据恢复公司,可以通过分析二进制文件来恢复数据,至少部分是可能的。你可能无法自己做,因为正如其他人所说的那样,“当你删除记录时SQLite会永久删除数据”,这是真的,因为SQLite中的数据删除操作涉及覆盖描述数据的位置的文件中的元数据是什么以及它如何与其他数据相关。
部分数据可能仍然物理上的文件中,但:
- 的指向这个数据(sqlite的使用B树)都不见了,文件区域被标记为在metedata “自由空间”
- 在使用数据库的过程中,某些空间可能已被覆盖,并且现在包含垃圾。
如果你有没有为未来几个月的做,你可以通过分析SQLite的文件结构,并运用这些知识去尝试猜测开始在数据威力已经结束了在文件中前被删除(意思是,其元数据被覆盖),因此执行恢复。你需要从这里开始:http://www.sqlite.org/fileformat.html。
在处理任何数据库时,我不会依赖数据恢复公司,因为数据库倾向于相对快速地重用磁盘页面。 –
如果你的时间比你的钱少,你必须阅读[文件格式文档](http://www.sqlite.org/fileformat2.html)并手工提取数据。 –
@CL,tanx ..它对我很好..我的问题是我住在我没有去过签证卡或在线购买的国家或..我应该写它,而不是买它..;) –